使用 lambda 表达式进行集合类型转换
目标类型 List
转 List
List<String> list1 = Lists.newArrayList();
List<String> list2 = list1.stream().map(string -> {
return "stream().map()处理之后:" + string;
}).collect(Collectors.toList());
转 Map
转换属性 Map,值为属性
List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, String> map = allList.stream().
collect(Collectors.toMap(SystemTabMenu::getParentid, SystemTabMenu::getParentid));
// Collectors.toMap在遇到重复键时会抛出IllegalStateException异常
// 如果你希望在遇到重复键时保留最后一个值,可以使用Map::putIfAbsent作为BinaryOperator
Map<String, String> map = allList.stream().
collect(Collectors.toMap(SystemTabMenu::getParentid, SystemTabMenu::getParentid,
(oldValue, newValue) -> newValue));
转换属性 Map,值为对象
List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, SystemTabMenu> map = allList.stream().
collect(Collectors.toMap(SystemTabMenu::getParentid, v -> v));
分组汇总
List<UploadDataStatistics> allList = Lists.newArrayList();
Map<String, Integer> resultMap = allList.stream().
collect(Collectors.groupingBy(UploadDataStatistics::getDataType,
Collectors.summingInt(UploadDataStatistics::getSuccessnum)));
转 Map<String, List>
List<SystemTabMenu> allList = Lists.newArrayList();
Map<String, List<SystemTabMenu>> map = allList.stream().
collect(Collectors.groupingBy(e -> e.getParentid()));
转数组 String []
List<String> list = Arrays.asList("a","b","c");
String[] strings=list.toArray(new String[0]);
转数组 Integer []
List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
Integer[] integers = list.toArray(new Integer[0]);
转数组 int []
List<Integer> list = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
int[] arr1 = list.stream().mapToInt(Integer::valueOf).toArray();
想要转换成 int [] 类型,就得先转成 IntStream。
通过 mapToInt () 把
Stream<Integer>
调用 Integer::valueOf 来转成 IntStream通过 IntStream 中默认 toArray () 转成 int []。
过滤出一个元素
List<User> users = Lists.newArrayList();
User match = users.stream().filter((user) -> user.getId() == 1).findAny().get();
求最小值
int min = list.stream().mapToInt(t->t).min().getAsInt();
转拼接字符串
List<Long> list = Arrays.asList(0, 1, 2);
String ids = list.stream().map(String::valueOf).collect(Collectors.joining(","));
目标类型 Set
转 Set
Set<String> nameSet = personSet.stream().map(Person::getName).collect(Collectors.toSet());
目标类型 Map
转 List
map.entrySet().stream().map(e -> e.getValue() + e.getKey()).collect(Collectors.toList());
取 Value 最大的 Key
Map<String, Integer> map = new HashMap<>();
String maxKey = map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue((t1, t2) -> t2 - t1))
.map(e -> e.getKey()).collect(Collectors.toList()).get(0);
收集 Map<Kry,List>
Map<Integer, List<Integer>> map = new TreeMap<>();
map.computeIfAbsent(key, k -> new ArrayList<>());
map.get(key).add(value);
转拼接字符串
Map<Long, String> infoIds = new TreeMap<>();
String ids = infoIds.keySet().stream().map(String::valueOf).collect(Collectors.joining(","));
目标类型 int 数组
截取数组
int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
int[] newData = Arrays.copyOfRange(data,2,7);
// {2,3,4,5,6}
转 List
Integer [] 转 List<Integer>
:
List<Integer> list = Arrays.asList(integers1);
int [] 转 List<Integer>
int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
List<Integer> list = Arrays.stream(data).boxed().collect(Collectors.toList());
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Arrays.stream (arr) 可以替换成 IntStream.of (arr)。
- 使用 Arrays.stream 将 int [] 转换成 IntStream。
- 使用 IntStream 中的 boxed () 装箱。将 IntStream 转换成
Stream<Integer>
。 - 使用 Stream 的 collect (),将
Stream<T>
转换成List<T>
,因此正是List<Integer>
。
String [] 转换为 List<Integer>
:
String[] stringArray = {"1", "2", "3", "4", "5"};
List<Integer> integerList = Arrays.stream(stringArray)
.map(Integer::valueOf)
.collect(Collectors.toList());
转包装类数组
int [] 转 Integer []
int[] data = {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
// {0, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 }
Arrays.stream (arr) 可以替换成 IntStream.of (arr)。
- 使用 Arrays.stream 将 int [] 转换成 IntStream。
- 使用 IntStream 中的 boxed () 装箱。将 IntStream 转换成
Stream<Integer>
。 - 使用 Stream 的 toArray,传入 IntFunction<A []> generator。这样就可以返回 Integer 数组。不然默认是 Object []。
目标类型 String 数组
数组类型转换
String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
Integer[] integers = Arrays.stream(tenantids).map(Integer::valueOf).toArray(Integer[]::new);
转 List
String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
List<Integer> list = Arrays.stream(data).map(Integer::valueOf).collect(Collectors.toList());
转 Set
String[] data = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
List<Integer> list = Arrays.stream(data).map(Integer::valueOf).collect(Collectors.toSet());
相关文章