当前位置: 首页 > article >正文

[Java List类型和Map类型想换转换案例]

目录

1. List转Map

2. Map转List

3. List转Map并保留重复Key

4. Map转List并保留Key值

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<Student> students = new ArrayList<>();
// 添加学生数据

Map<String, List<Student>> studentMap = students.stream()
        .collect(Collectors.groupingBy(Student::getName));

我们先创建了一个List类型的students数据,然后通过Java 8的Stream API对数据进行分组,得到了一个以学生姓名为Key、以学生对象List为Value的Map<String, List>类型的studentMap数据。

2. Map转List

将Map类型的数据转换为List类型的数据,可以将按照Key-Value方式存储的数据转换为仅包含Value的数据。以下是一种将Map类型的学生数据转换为仅包含学生对象List的示例:

Map<String, Student> studentMap = new HashMap<>();
// 添加学生数据

List<Student> students = new ArrayList<>(studentMap.values());

我们先创建了一个Map<String, Student>类型的studentMap数据,然后通过Java 8的Stream API将Map的Values转换为一个List类型的数据,得到了仅包含学生对象List的数据。

3. List转Map并保留重复Key

我们需要对List类型的数据进行分组时,可能会出现Key值重复的情况,此时需要保留重复的Key值并将对应的Value值合并为一个List。下面是一种将List类型的学生数据按照班级进行分组的示例:

List<Student> students = new ArrayList<>();
// 添加学生数据

Map<String, List<Student>> studentMap = students.stream()
        .collect(Collectors.groupingBy(Student::getGrade, Collectors.toList()));

我们先创建了一个List类型的students数据,然后通过Java 8的Stream API对数据进行分组,并通过Collectors.toList()方法保留重复的Key值,得到了一个以学生班级为Key、以学生对象List为Value的Map<String, List>类型的studentMap数据。

4. Map转List并保留Key值

将Map类型的数据转换为List类型的数据时,有时候需要保留Map中的Key值,可以通过Map的entrySet()方法获取到Key-Value对,再通过Java 8的Stream API将Key值转换为List类型的数据。以下是一种将Map类型的学生数据转换为仅包含学生姓名List的示例:

Map<String, Student> studentMap = new HashMap<>();
// 添加学生数据

List<String> names = studentMap.entrySet().stream()
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());

我们先创建了一个Map<String, Student>类型的studentMap数据,然后通过Java 8的Stream API获取到Map的entrySet(),再通过map()方法将Key值转换为List类型的数据,得到了仅包含学生姓名List的数据。

5 简单版 可以通过遍历List,将List中的元素转换为Map中的键值对

List<String> list = new ArrayList<>();
list.add("key1:value1");
list.add("key2:value2");

Map<String, String> 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<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

List<String> list = new ArrayList<>();
for (Map.Entry<String, String> 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<String> list = new ArrayList<>();
list.add("key1:value1");
list.add("key2:value2");

Map<String, String> 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<String> list = new ArrayList<>();
list.add("key1:value1");
list.add("key2:value2");

Map<String, String> map = new HashMap<>();
CollectionUtils.addAll(map, list.toArray(new String[0]));

我们首先创建了一个List,然后将两个字符串元素添加到List中。接着,我们创建了一个空的Map,然后使用Apache Commons Collections库中的方法将List转换为Map。


http://www.kler.cn/a/15049.html

相关文章:

  • Linux system-timesyncd同步机制梳理
  • hhdb数据库介绍(9-24)
  • web——upload-labs——第十二关——%00截断
  • oracle19c开机自启动
  • 2024年了,TCP分析工具有哪些?
  • sql中的聚合函数
  • 2023年产业基金研究报告
  • 【回眸】ChatGPT Plus(GPT4体验卡)
  • L1-6 剪切粘贴
  • 写一个加载远程js的函数,function loadJSFn(sucCb,failCb){}, 要考虑到低端浏览器的兼容性;
  • 如何基于vue实现倒计时效果
  • 字节的面试,你能扛住几道?
  • NetSuite 负库存控制功能包
  • Go分布式爬虫笔记(二十)
  • promise的作用
  • huggingface下载的.arrow数据集读取与使用说明
  • 初学者入门C语言指针与链表
  • CVE漏洞复现-CVE-2019-11043-PHP-FPM 远程代码执行漏洞
  • 地热井监测控制系统解决方案
  • 适用于Windows PC和Mac的最佳录屏软件Camtasia2023强悍来袭
  • C++设计模式21:策略模式
  • 如何高质量的提问题让chatgpt更明白我们的意图
  • delphi JSON用法
  • static_cast、dynamic_cast和reinterpret_cast区别和联系
  • 最好用的六款虚拟机软件,赶紧收藏
  • SAP-选择实施离散制造模式还是重复制造模式?