创客贴网站做海报技能,平度市网站建设,一件代发货源开网店货源,运维培训 网站建设#x1f4cc; 问题点#xff1a; 在 Coding 过程中经常会遇到数组、List、Set、Map 之间的相互转换......这里记录一下转换的几种方式。#x1f636;#x1f636;#x1f636;
目录
#x1f4cc; 集合转换
1.数组 转 List#xff1a;
2.List 转 数组#xff1a;
3… 问题点 在 Coding 过程中经常会遇到数组、List、Set、Map 之间的相互转换......这里记录一下转换的几种方式。
目录 集合转换
1.数组 转 List
2.List 转 数组
3.List 转 Set / Set 转 List
4.List 转 Map
5.Map 转 List / Set
6.List 转 List / Set 拓展知识点 集合转换
1.数组 转 List 将数组 Array 转换成集合数组中的元素必须是引用数据类型如果基本数据类型的数组转换成集合会将整个数组当作一个对象转换。 最简单的方法就是使用 for 循环遍历
private static void arrToList() {int[] arr {1, 2, 3, 4, 5};// 注意基础数据类型转换为对应的包装类型集合中存储引用类型ArrayListInteger arrayList new ArrayList();for (int i 0; i arr.length; i) {arrayList.add(arr[i]);}
} Arrays.asList() 返回一个受指定数组支持的固定大小的列表。所以不能做Add、Remove等操作。
private static void arrToList() {// 基本数据类型的数组转换成集合,会将整个数组当作一个对象转换// 输出数组地址int[] arr {1, 2, 3, 4, 5};Listint[] list Arrays.asList(arr);System.out.println(list);// 将数组转换成集合,数组必须是引用数据类型// 输出[1, 2, 3, 4, 5]Integer[] arr2 {1, 2, 3, 4, 5};// Arrays.asList()返回一个受指定数组支持的固定大小的列表。所以不能做Add、Remove等操作。ListInteger list2 Arrays.asList(arr2);// 再次新建List就可以了ListInteger list3 new ArrayList(list2);list3.add(7);System.out.println(list2);System.out.println(list3);
}
2.List 转 数组 使用 List 中定义的 API 转换
private static void listToArr() {// 数组必须是引用数据类型ListString list new ArrayList();for (int i 0; i 4; i) {list.add(List元素 i);}// 创建一个数组String[] arr new String[list.size()];// 将数组作为参数传入list.toArray(arr);System.out.println(Arrays.toString(arr));
}
3.List 转 Set / Set 转 List 将 List 集合转为 Set 集合是可以直接去重的。
private static void listToSet(){ListString list new ArrayList();for (int i 0; i 4; i) {list.add(List元素i);}// 直接new一个对象将list放入即可SetString set new HashSet(list);System.out.println(set.toString());
} Set 集合转 List 集合类似直接 new 一个 List 对象将 set 集合放入即可
4.List 转 Map 如果我们的 List 存放的对象我们想要将其转化为 Map 集合key为对象的某个属性。使用 Stream 流 API 实现
public class TestEntity {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return TestEntity{ id id , name name \ };}
}
private static void listToMap(){ListTestEntity list new ArrayList();for (int i 0; i 4; i) {TestEntity testEntity new TestEntity();testEntity.setId(i);testEntity.setName(name-i);list.add(testEntity);}System.out.println(list.toString());// 使用stream流的方式实现高效// 此处map的key是 TestEntity的idMapInteger, TestEntity map list.stream().collect(Collectors.toMap(TestEntity::getId, Function.identity(), (key1, key2) - key2));System.out.println(map.toString());
}
5.Map 转 List / Set
private static void mapToList(){MapInteger, TestEntity map new HashMap();for (int i 0; i 4; i) {TestEntity testEntity new TestEntity();testEntity.setId(i);testEntity.setName(namei);map.put(i, testEntity);}// 直接获取map的key的set集合SetInteger set1 map.keySet();// 将map的values 转换为Set集合SetTestEntity set new HashSet(map.values());// 将map的values 转换为List集合ListTestEntity list new ArrayList(map.values());System.out.println(set.toString());System.out.println(list.toString());
}
6.List 转 List / Set 需求List1 集合存放是对象我们希望直接从集合里获取到 对象的某个属性的 List2 集合(使用Stream流实现
private static void listToList(){ListTestEntity list new ArrayList();for (int i 0; i 4; i) {TestEntity testEntity new TestEntity();testEntity.setId(i);testEntity.setName(name-i);list.add(testEntity);}// 获取到 name的list集合ListString list1 list.stream().map(TestEntity::getName).collect(Collectors.toList());// 获取到 name的set集合SetString set list.stream().map(TestEntity::getName).collect(Collectors.toSet());System.out.println(list1.toString());
} 拓展知识点 针对集合的操作使用 JDK 8 新特性 Stream 流 API 操作更方便
Java 8 Stream | 菜鸟教程 (runoob.com)https://www.runoob.com/java/java8-streams.html