多方式循环遍历
- 1. List<Map<String, Object>>多方式循环
- 测试结果
- 2. Map<String,List<Map<String, Object>>>
- 测试结果
☀️相关笔记章节:
🌹java 1.8 stream使用总结(个人总结有一些经典文章的集合)
🌹遍历 ArrayList和遍历 Map的几种方式
🌹Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)
🌹List,Map多层循环嵌套Demo及其理解
🌹List,Map 三种遍历方式:(总结理解)
🌹List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历
1. List<Map<String, Object>>多方式循环
package com.example.democrud.democurd.Prototype.demo01;
import java.util.*;
public class Demo5 {
public static void main(String[] args) {
//公共参数
List<Map<String, Object>> maps = ListmapTest();
//第一种方式 for循环
forTest(maps);
//第二种方式 for迭代循环
iteratorTest(maps);
entrySetTest(maps);
}
public static void entrySetTest(List<Map<String, Object>> maps) {
/**
* entrySet()
将原有Map集合中的键值作为一个整体返回Set集合
再将包含键值对对象的Set集合转化为Iterator接口对象,
然后获取集合中的所有的键值对映射关系,
在从映射关系中取出键和值
*
*/
for (Map<String, Object> map : maps) {
Set<Map.Entry<String, Object>> entries = map.entrySet();
for (Map.Entry<String, Object> entry : entries) {
String key = entry.getKey();
String value = entry.getValue().toString();
System.out.println("Key的值==》" + key);
System.out.println("value的值==》" + value);
}
}
System.out.println("-----------------分隔符---------entrySet()------↑↑↑↑↑↑↑------");
}
/**
* for迭代循环
*
* @param maps
*/
public static void iteratorTest(List<Map<String, Object>> maps) {
for (int i = 0; i < maps.size(); i++) {
Map<String, Object> stringObjectMap = maps.get(i);
System.out.println(stringObjectMap);
Iterator<String> iterator = stringObjectMap.keySet().iterator();
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println("key=>" + next);
String value = stringObjectMap.get(next).toString();
System.out.println("value=>" + value);
}
}
System.out.println("-----------------分隔符---------for迭代循环----↑↑↑↑↑↑↑--------");
}
/**
* for循环
*
* @param maps
*/
public static void forTest(List<Map<String, Object>> maps) {
for (Map<String, Object> map : maps) {
//KeySet(): 返回map中所有key值的列表。
for (String s : map.keySet()) {
System.out.println("key的值 :" + s + "\t");
//根据对应的key获取到map的值
System.out.println(map.get(s));
}
}
System.out.println("-----------------分隔符--------for循环------↑↑↑↑↑↑↑-------");
}
/**
* 公共参数接口
*
* @return
*/
public static List<Map<String, Object>> ListmapTest() {
//List 中包含多个map
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
List<String> list3 = new ArrayList<String>();
List<String> list4 = new ArrayList<String>();
Map<String, Object> hashMap = new HashMap<String, Object>();
list1.add("我喜欢代丽1号");
list2.add("我喜欢代丽2号");
hashMap.put("小龙1", list1);
hashMap.put("小龙2", list2);
list.add(hashMap);
Map<String, Object> hashMap1 = new HashMap<String, Object>();
list3.add("我喜欢代丽3号");
list4.add("我喜欢代丽4号");
hashMap1.put("小龙3", list3);
hashMap1.put("小龙4", list4);
list.add(hashMap1);
System.out.println("公共参数为==>" + list);
System.out.println("-----------------分隔符------公共接口--------↑↑↑↑↑↑↑-------");
return list;
}
}
测试结果
公共参数为==>[{小龙2=[我喜欢代丽2号], 小龙1=[我喜欢代丽1号]}, {小龙3=[我喜欢代丽3号], 小龙4=[我喜欢代丽4号]}]
-----------------分隔符------公共接口--------↑↑↑↑↑↑↑-------
key的值 :小龙2
[我喜欢代丽2号]
key的值 :小龙1
[我喜欢代丽1号]
key的值 :小龙3
[我喜欢代丽3号]
key的值 :小龙4
[我喜欢代丽4号]
-----------------分隔符--------for循环------↑↑↑↑↑↑↑-------
{小龙2=[我喜欢代丽2号], 小龙1=[我喜欢代丽1号]}
key=>小龙2
value=>[我喜欢代丽2号]
key=>小龙1
value=>[我喜欢代丽1号]
{小龙3=[我喜欢代丽3号], 小龙4=[我喜欢代丽4号]}
key=>小龙3
value=>[我喜欢代丽3号]
key=>小龙4
value=>[我喜欢代丽4号]
-----------------分隔符---------for迭代循环----↑↑↑↑↑↑↑--------
Key的值==》小龙2
value的值==》[我喜欢代丽2号]
Key的值==》小龙1
value的值==》[我喜欢代丽1号]
Key的值==》小龙3
value的值==》[我喜欢代丽3号]
Key的值==》小龙4
value的值==》[我喜欢代丽4号]
-----------------分隔符---------entrySet()------↑↑↑↑↑↑↑------
2. Map<String,List<Map<String, Object>>>
package com.example.democrud.democurd.Prototype.demo01;
import java.util.*;
public class demo6 {
//Map<String,List<Map<String, Object>>>
public static void main(String[] args) {
//原数据
Map<String, List<Map<String, Object>>> friend = friend();
//for循环
forTest(friend);
System.out.println("\t");
iteratorTest(friend);
}
/**
* @param friend
*/
public static void iteratorTest(Map<String, List<Map<String, Object>>> friend) {
/**
* map.entrySet().iterator();
* 首先是map.entrySet()是把HashMap类型的数据转换成集合类型;
* 然后是获得map的迭代器,用作遍历map中的每一个键值对;
* iterator()是去获得这个集合的迭代器,保存在iter里面;
*/
Iterator<Map.Entry<String, List<Map<String, Object>>>> iterator = friend.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, List<Map<String, Object>>> next = iterator.next();
System.out.println("获取到2租数据朋友和前女友的集合==>" + next);
//上面现在已经map了 可以在迭代循环下
//扩展k,v 方式
String key = next.getKey();
String value = next.getValue().toString();
System.out.println("分别获取k,v的值==>" + key + "-*-" + value);
//扩展结束
//已经拿到最外层的key 了我们需要继续拆分里面的v的值 可以看到他是list的集合
Iterator<Map<String, Object>> iterator1 = friend.get(key).iterator();
while (iterator1.hasNext()) {
Map<String, Object> next1 = iterator1.next();
System.out.println(next1);
Set<Map.Entry<String, Object>> entries = next1.entrySet();
for (Map.Entry<String, Object> entry : entries) {
System.out.println("最后的数据==>" + entry);
}
}
}
System.out.println("\t");
System.out.println("-----------------分隔符--------iterator------↑↑↑↑↑↑↑-------");
}
/**
* for循环
*
* @param friend
*/
public static void forTest(Map<String, List<Map<String, Object>>> friend) {
//KeySet(): 返回map中所有key值的列表。
for (String s : friend.keySet()) {
System.out.println("key值" + s);
for (Map<String, Object> map : friend.get(s)) {
System.out.println("value" + map);
for (String s1 : map.keySet()) {
String o = map.get(s1).toString();
System.out.println("==》key :" + s1 + "==》value :" + o);
}
}
}
System.out.println("\t");
System.out.println("-----------------分隔符--------for循环------↑↑↑↑↑↑↑-------");
}
/**
* 原始数据
*
* @return
*/
public static Map<String, List<Map<String, Object>>> friend() {
Map<String, Object> map = new HashMap<>();
Map<String, Object> map1 = new HashMap<>();
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map3 = new HashMap<>();
Map<String, Object> map4 = new HashMap<>();
//=后面new ArrayList<>() 取前面最外层的属性
List<Map<String, Object>> maps = new ArrayList<>();
List<Map<String, Object>> maps1 = new ArrayList<>();
//最外层数据
Map<String, List<Map<String, Object>>> yanwc = new HashMap<>();
map.put("name", "文超");
map.put("age", 25);
map.put("gender", "男");
map1.put("name", "吊毛");
map1.put("age", 28);
map1.put("gender", "男");
map2.put("name", "老黄");
map2.put("age", 26);
map2.put("gender", "男");
map3.put("name", "代丽");
map3.put("age", 27);
map3.put("gender", "女");
map4.put("name", "何晶");
map4.put("age", 27);
map4.put("gender", "女");
maps.add(map);
maps.add(map1);
maps.add(map2);
maps1.add(map3);
maps1.add(map4);
yanwc.put("friend", maps);
yanwc.put("girlfriend", maps1);
System.out.println("yanwc的数据==》" + yanwc);
System.out.println("-----------------分隔符--------数据展示------↑↑↑↑↑↑↑-------");
return yanwc;
}
}
测试结果
yanwc的数据==》{girlfriend=[{gender=女, name=代丽, age=27}, {gender=女, name=何晶, age=27}], friend=[{gender=男, name=文超, age=25}, {gender=男, name=吊毛, age=28}, {gender=男, name=老黄, age=26}]}
-----------------分隔符--------数据展示------↑↑↑↑↑↑↑-------
key值girlfriend
value{gender=女, name=代丽, age=27}
==》key :gender==》value :女
==》key :name==》value :代丽
==》key :age==》value :27
value{gender=女, name=何晶, age=27}
==》key :gender==》value :女
==》key :name==》value :何晶
==》key :age==》value :27
key值friend
value{gender=男, name=文超, age=25}
==》key :gender==》value :男
==》key :name==》value :文超
==》key :age==》value :25
value{gender=男, name=吊毛, age=28}
==》key :gender==》value :男
==》key :name==》value :吊毛
==》key :age==》value :28
value{gender=男, name=老黄, age=26}
==》key :gender==》value :男
==》key :name==》value :老黄
==》key :age==》value :26
-----------------分隔符--------for循环------↑↑↑↑↑↑↑-------
获取到2租数据朋友和前女友的集合==>girlfriend=[{gender=女, name=代丽, age=27}, {gender=女, name=何晶, age=27}]
分别获取k,v的值==>girlfriend-*-[{gender=女, name=代丽, age=27}, {gender=女, name=何晶, age=27}]
{gender=女, name=代丽, age=27}
最后的数据==>gender=女
最后的数据==>name=代丽
最后的数据==>age=27
{gender=女, name=何晶, age=27}
最后的数据==>gender=女
最后的数据==>name=何晶
最后的数据==>age=27
获取到2租数据朋友和前女友的集合==>friend=[{gender=男, name=文超, age=25}, {gender=男, name=吊毛, age=28}, {gender=男, name=老黄, age=26}]
分别获取k,v的值==>friend-*-[{gender=男, name=文超, age=25}, {gender=男, name=吊毛, age=28}, {gender=男, name=老黄, age=26}]
{gender=男, name=文超, age=25}
最后的数据==>gender=男
最后的数据==>name=文超
最后的数据==>age=25
{gender=男, name=吊毛, age=28}
最后的数据==>gender=男
最后的数据==>name=吊毛
最后的数据==>age=28
{gender=男, name=老黄, age=26}
最后的数据==>gender=男
最后的数据==>name=老黄
最后的数据==>age=26
-----------------分隔符--------iterator------↑↑↑↑↑↑↑-------
分享结束;大家有不会或者不理解的可以留言提出;秒回哦;