Java中List,map及List<Map<key,value>>
一、首先确定数据的结构
一般我们可以把从数据库,前端传过来的数据打印到控制台,比如:
- List结构数据:[hello, java, word, xiaowu]
- Map结构数据:{nihao=xiaoli, zaijian=xiaohong, hello=xiaowu}
我最近才知道以上只是简单的数据,还有复杂一点数据,就是每个小List中存放Map<key,value>,再把每个小List存放到List中,比如:
- List<Map<key,value>>结构数据:[[{gg=xiaowu, hh=xiaoli, ff=xiaohong}], [{aa=xiaofei, bb=xiaozhang, cc=xianghu}], [{dd=xiaozhu, ee=xiaoming, ff=xiaodou}]]
自己后续在试试别的数据,突然第一次见这种数据,感觉毫无下手出,有人告诉我是这样处理的:先把它当成一个list处理,循环处理出来就是熟悉的map,这样就简单多了。
二、List,map基础操作
- List基本操作
// 1、创建集合对象
ArrayList arrayList = new ArrayList<>();
// 2、list中添加数据,用add,一般数据为一次插入
arrayList.add("123");
arrayList.add("zhang");
// 3、list中添加指定索引数据 目前数据为:[123, 2, zhang]
arrayList.add(1,"2");
// 4、判断list中是否存在字符,返回结果为true,false
boolean contains = arrayList.contains("123");
// 5、查询list的长度 该长度为 3
int size = arrayList.size();
// 6、判断list集合中是否为空
boolean empty = arrayList.isEmpty();
// 7、获取索引对应的数据 结果为:2
Object o = arrayList.get(1);
// 8、将list中索引为2的数据移除 移除数据 zhang
arrayList.remove(2);
// 9、将list中数据为2的移除 移除数据 2
arrayList.remove("2");
// 10、清空list 结果:arrayList=[]
arrayList.clear();
- Map基本操作
// 1、创建数据类型为Map<String, String>
Map<String, String> stringStringHashMap = new HashMap<>();
// 2、往map中插入数据,数据形式为(key,value)
stringStringHashMap.put("1"," ");
// 3、判断map中是否为空 即便是所有value为空,key存在,也认为map中存在数据 返回结果为true
boolean empty = stringStringHashMap.isEmpty();
stringStringHashMap.put("2","b");
stringStringHashMap.put("3","c");
// 4、得到map的长度 size=3
int size = stringStringHashMap.size();
// 5、替换map中的数据.replace(key, oldvalue, newvalue) 返回 replace=ture
boolean replace = stringStringHashMap.replace("1", " ", "a");
// 6、替换map中的数据.replace(key, value) 无返回结果
stringStringHashMap.replace("1", "a");
// 7、判断map中数据是否存在key为"1"的数值 返回hascontainsKey=true
boolean hascontainsKey = stringStringHashMap.containsKey("1");
// 8、判断map中数据是否存在value为"1"的数值 hascontainsValue=true
boolean hascontainsValue = stringStringHashMap.containsValue("a");
// 9、取map中key为1的value value = a
String value = stringStringHashMap.get("1");
// 10、获取map中所有的key值 结果为strings = [1, 2, 3]
Set<String> strings = stringStringHashMap.keySet();
// 11、获取map中所有的value值 结果为values = [1, 2, 3]
Collection<String> values = stringStringHashMap.values();
//12、将smallHashMap中的所有数据,添加到stringStringHashMap中。 stringStringHashMap={1=a, 2=b, 3=c, 4=d}
Map<String, String> smallHashMap = new HashMap<>();
smallHashMap.put("4", "d");
stringStringHashMap.putAll(smallHashMap);
// 14、清空stringStringHashMap中的数据 stringStringHashMap = {}
stringStringHashMap.clear();
三、集合循环操作
- List循环基本操作
//创建集合对象
ArrayList<String> arrayList = new ArrayList<>();
//添加多个字符串元素
arrayList.add("hello");
arrayList.add("hello");
arrayList.add("hello");
arrayList.add("java");
arrayList.add("java");
arrayList.add("java");
arrayList.add("word");
arrayList.add("word");
arrayList.add("word");
arrayList.add("hello");
arrayList.add("hello");
arrayList.add("hello");
arrayList.add("xiaowu");
//for遍历集合
for (int x=0; x<arrayList.size(); x++){
String s = (String) arrayList.get(x);
System.out.println(s);
}
//迭代器
Iterator<String> it = arrayList.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
//增强for循环
for (String s : arrayList){
System.out.println(s);
}
- Map集合循环基本操作
/**
* map循环的方式
*/
Map<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("1","a");
stringStringHashMap.put("2","b");
stringStringHashMap.put("3","c");
//1、map自带的.forEach((k,v) ->{每次循环的需求}); lambada函数
stringStringHashMap.forEach((k, v) -> {
System.out.println("key:value = " + k + ":" + v);
});
// 2、keySet获取map集合中key的集合 然后在遍历key,可以取key或value
for(String key:stringStringHashMap.keySet()){
String value = stringStringHashMap.get(key);//
System.out.println("key:value = " + key + ":" + value);
}
// 2、keySet获取map集合中key的集合 然后在遍历key,可以取key或value
for(String key:stringStringHashMap.keySet()){
String value = stringStringHashMap.get(key);//
System.out.println("key:value = " + key + ":" + value);
}
- list嵌套map集合循环基本操作
//创建数据arrayList,数据为[[map1,map2,map3],[map1,map2,map3],[map1,map2,map3]]
ArrayList arrayList = new ArrayList<>();
ArrayList<Map> arrayList1 = new ArrayList<>();
ArrayList<Map> arrayList2 = new ArrayList<>();
ArrayList<Map> arrayList3 = new ArrayList<>();
HashMap<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("gg","xiaowu");
stringStringHashMap.put("hh","xiaoli");
stringStringHashMap.put("ff","xiaohong");
HashMap<String, String> stringStringHashMap2 = new HashMap<>();
stringStringHashMap2.put("aa","xiaofei");
stringStringHashMap2.put("bb","xiaozhang");
stringStringHashMap2.put("cc","xianghu");
HashMap<String, String> stringStringHashMap3 = new HashMap<>();
stringStringHashMap3.put("dd","xiaozhu");
stringStringHashMap3.put("ee","xiaoming");
stringStringHashMap3.put("ff","xiaodou");
arrayList1.add(stringStringHashMap);
arrayList2.add(stringStringHashMap2);
arrayList3.add(stringStringHashMap3);
arrayList.add(arrayList1);
arrayList.add(arrayList2);
arrayList.add(arrayList3);
//循环 每个数据都能精确操作
ArrayList arrayList4 = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
//循环第一次,得到arrayList1,arrayList2,arrayList3
arrayList4 = (ArrayList) arrayList.get(i);
for (int j = 0; j < arrayList4.size(); j++) {
//循环第二次得到每个arrayList中map
HashMap<String, String> stringHashMap = (HashMap<String, String>) arrayList4.get(j);
System.out.println(stringHashMap);
//map循环得到每个map中的key,value
for(String key:stringHashMap.keySet()){
String value = stringHashMap.get(key);//
System.out.println("key:value = " + key + ":" + value);
}
}
}
}
}
结果为:
这里只是大概的逻辑,具体还要看你的集合数据类型,仅供参考。