目录
5 简单版 可以通过遍历List,将List中的元素转换为Map中的键值对
6:通过遍历Map,将Map中的键值对转换为List中的元素
7:使用Java 8的Stream API进行List和Map的转换
8:使用Apache Commons Collections库中的方法进行List和Map的转换
1. List转Map
将List类型的数据转换为Map类型的数据,是一种将数据按照指定的规则进行归类的操作。下面是一种将List类型的学生数据按照姓名进行分组的示例:
List students = new ArrayList<>();// 添加学生数据Map> studentMap = students.stream() .collect(Collectors.groupingBy(Student::getName));
我们先创建了一个List类型的students数据,然后通过Java 8的Stream API对数据进行分组,得到了一个以学生姓名为Key、以学生对象List为Value的Map
2. Map转List
将Map类型的数据转换为List类型的数据,可以将按照Key-Value方式存储的数据转换为仅包含Value的数据。以下是一种将Map类型的学生数据转换为仅包含学生对象List的示例:
Map studentMap = new HashMap<>();// 添加学生数据List students = new ArrayList<>(studentMap.values());
我们先创建了一个Map
3. List转Map并保留重复Key
我们需要对List类型的数据进行分组时,可能会出现Key值重复的情况,此时需要保留重复的Key值并将对应的Value值合并为一个List。下面是一种将List类型的学生数据按照班级进行分组的示例:
List students = new ArrayList<>();// 添加学生数据Map> studentMap = students.stream() .collect(Collectors.groupingBy(Student::getGrade, Collectors.toList()));
我们先创建了一个List类型的students数据,然后通过Java 8的Stream API对数据进行分组,并通过Collectors.toList()方法保留重复的Key值,得到了一个以学生班级为Key、以学生对象List为Value的Map
4. Map转List并保留Key值
将Map类型的数据转换为List类型的数据时,有时候需要保留Map中的Key值,可以通过Map的entrySet()方法获取到Key-Value对,再通过Java 8的Stream API将Key值转换为List类型的数据。以下是一种将Map类型的学生数据转换为仅包含学生姓名List的示例:
Map studentMap = new HashMap<>();// 添加学生数据List names = studentMap.entrySet().stream() .map(Map.Entry::getKey) .collect(Collectors.toList());
我们先创建了一个Map
5 简单版 可以通过遍历List,将List中的元素转换为Map中的键值对
List list = new ArrayList<>();list.add("key1:value1");list.add("key2:value2");Map map = new HashMap<>();for (String str : list) { String[] arr = str.split(":"); map.put(arr[0], arr[1]);}
我们首先创建了一个List,然后将两个字符串元素添加到List中。接着,我们创建了一个空的Map,然后通过遍历List,将List中的元素转换为Map中的键值对。
6:通过遍历Map,将Map中的键值对转换为List中的元素
Map map = new HashMap<>();map.put("key1", "value1");map.put("key2", "value2");List list = new ArrayList<>();for (Map.Entry entry : map.entrySet()) { String str = entry.getKey() + ":" + entry.getValue(); list.add(str);}
我们首先创建了一个Map,然后将两个键值对添加到Map中。接着,我们创建了一个空的List,然后通过遍历Map,将Map中的键值对转换为List中的元素。
7:使用Java 8的Stream API进行List和Map的转换
List list = new ArrayList<>();list.add("key1:value1");list.add("key2:value2");Map map = list.stream() .map(str -> str.split(":")) .collect(Collectors.toMap(arr -> arr[0], arr -> arr[1]));
我们首先创建了一个List,然后将两个字符串元素添加到List中。接着,我们使用Stream API对List进行操作,将List中的元素转换为Map中的键值对。
8:使用Apache Commons Collections库中的方法进行List和Map的转换
List list = new ArrayList<>();list.add("key1:value1");list.add("key2:value2");Map map = new HashMap<>();CollectionUtils.addAll(map, list.toArray(new String[0]));
我们首先创建了一个List,然后将两个字符串元素添加到List中。接着,我们创建了一个空的Map,然后使用Apache Commons Collections库中的方法将List转换为Map。
来源地址:https://blog.csdn.net/sqL520lT/article/details/130365975