網站首頁 編程語言 正文
1.List<Map<String, Object>>是什么意思
List集合中的對象是一個Map對象,而這個Map對象的鍵是String類型,值是Object類型
List以Map接口對象為列表對象。
Map以String為鍵,以Object為值。
List里只能放Map類型的對象,而這個Map類型的對象又只能放以String類型為鍵,以Object類型為值的鍵值對。
2.創建
1. List<Map<String, Object>> listMaps = new ArrayList<Map<String, Object>>();
2. List<Map<String, Object>> childs = new ArrayList<>();
3.使用
import java.util.*;
public class TestListMap {
public static void main(String[] args) {
List<Map<String, Object>> listMaps = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("1", "a");
map1.put("2", "b");
map1.put("3", "c");
listMaps.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("11", "aa");
map2.put("22", "bb");
map2.put("33", "cc");
listMaps.add(map2);
//遍歷listMaps 集合的三種方式
for (Map<String, Object> map : listMaps) {
for (String s : map.keySet()) {
System.out.print(map.get(s) + " ");
}
}
System.out.println();
System.out.println("========================");
for (int i = 0; i < listMaps.size(); i++) {
Map<String, Object> map = listMaps.get(i);
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String string = (String) iterator.next();
System.out.println(map.get(string));
}
}
System.out.println("++++++++++++++++++++++++++++");
for (Map<String, Object> map : listMaps) {
for (Map.Entry<String, Object> m : map.entrySet()) {
System.out.print(m.getKey() + " ");
System.out.println(m.getValue());
}
}
System.out.println("-----------------------------");
}
}
關于 List<Map<String, Object>>存值的問題
List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
for(int i=0;i<5;i++) {
map.put("a", i);
map.put("b", i);
listMap .add(map);
}
System.out.println(list);
輸出的結果是:[{b=4, a=4}, {b=4, a=4}, {b=4, a=4}, {b=4, a=4}, {b=4, a=4}]
換了一種方式
List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
for(int i=0;i<5;i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", i);
map.put("b", i);
listMap .add(map);
}
System.out.println(list);
輸出的結果是:[{b=0, a=0}, {b=1, a=1}, {b=2, a=2}, {b=3, a=3}, {b=4, a=4}];
原因:
出現這種區別的原因就是,List<Map<String, Object>> 里面存放的是map的地址,盡管循環了五次,但是每次的map對應的都是同一個地址,所以最后listMap里面存放的是五個同樣的map。
正確的寫法是每次循環的時候都實例化一個新的map對象,這樣listMap在add的時候,每次都是存的不一樣的map
如何取值:
List<Map<String, Object>> listMap = activityService.getlLisbllc(affairid);
for (int i = 0; i < listMap.size(); i++) {
String flowlogtime = " ";
String sysuserrealnameczry = " ";
if (listMap.get(i).get("flowlogtime") != null && listMap.get(i).get("flowlogtime").toString().length() != 0) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
flowlogtime = simpleDateFormat.format(listMap.get(i).get("flowlogtime"));
}
if (listMap.get(i).get("sysuserrealnameczry") != null && listMap.get(i).get("sysuserrealnameczry").toString().length() != 0) {
sysuserrealnameczry = listMap.get(i).get("sysuserrealnameczry").toString();
}
}
案例使用:
Controller:
@Autowired
private ActivityService activityService;
List<Map<String, Object>> listMap = activityService.getlLisbllc(affairid);
Service:
List<Map<String, Object>> getlLisbllc(String affairid);
ServiceImpl:
@Autowired
private SysUserMapper sysUserMapper;
@Override
public List<Map<String, Object>> getlLisbllc(String affairid) {
return sysUserMapper.getlLisbllc(affairid);
}
SysUserMapper:
List<Map<String, Object>> getlLisbllc(@Param("affairid") String affairid);
SysUserMapper.xml:
<select id="getlLisbllc" parameterType="string" resultType="java.util.LinkedHashMap">
select flow_Log_Time as flowlogtime,
Sys_User.sys_User_Real_Name as sysuserrealnameczry,
sys_User_Phone as sysuserphoneczry,
flow_log_content as flowlogcontentczry
from Affair
LEFT JOIN flow_log on flow_log.record_id=Affair.affair_id
LEFT JOIN Sys_User on flow_log.user_id=Sys_User.sys_user_id
where Affair.affair_id=#{affairid} ORDER BY flow_Log_Time
</select>
Map基礎知識
Map 是一種鍵-值對(key-value)集合,Map 集合中的每一個元素都包含一個鍵對象和一個值對象。其中,map中鍵可以是任意類型的對象,鍵對象不允許重復,每個鍵都有一個對應的值。值對象可以重復,并且值對象還可以是 Map 類型的。
鍵-值對(key-value)就如同數組中的下標和值,通過通過鍵找值就如同下標找數組值。
Map本身是一個接口,要使用Map需要通過子類進行對象實例化。
如聲明Map<String, List> map = null;
HashMap map = new HashMap();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
map.put("4", "d");
map.put("5", "e");
List
List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數組下 >標)來訪問List中的元素,這類似于Java的數組。
void add(String item) //依次往后添加添加元素
void add(String item, int index) //在指定位置處添加元素
void remove(int position) //刪除第幾個元素(索引從0開始)
void remove(String item) //刪除相同的元素
void removeAll() //刪除所有元素
原文鏈接:https://blog.csdn.net/qq_41512902/article/details/125675486
- 上一篇:SQL查詢出的兩列合并成一列顯示
- 下一篇:各數據庫SQL查詢結果多行數據合并成一行
相關推薦
- 2023-04-12 Android同步屏障機制sync?barrier實例應用詳解_Android
- 2022-05-08 Python+matplotlib實現堆疊圖的繪制_python
- 2022-10-31 利用WinForm實現上左右布局的方法詳解_C#教程
- 2022-12-21 Android?全局通知彈窗示例分析詳解_Android
- 2022-03-05 centos7下搭建DNS服務器介紹_Linux
- 2022-12-25 React安裝node-sass失敗解決方案分享_React
- 2022-03-12 linux下scp和sftp命令使用詳解_Linux
- 2022-03-08 android?studio項目:綁定服務和線程實現計時器_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支