日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

List<Map<String, Object>>使用

作者:多放香菜少加蔥 更新時間: 2022-07-21 編程語言

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

欄目分類
最近更新