美文网首页
Java Stream流使用技巧

Java Stream流使用技巧

作者: 莫失莫忘X3 | 来源:发表于2024-03-05 11:26 被阅读0次

Stream流是Java8添加的以一种链式调用的方法处理数据,主要侧重于计算。具有以下相关特点

  • 代码简洁
  • 链式调用

常用技巧

1.将数组变为当作List操作
 String[] strArr = {"1", "2", "3", "4"};
 List<String> strList = Arrays.asList(strArr);

注意:使用这种方式创建的list并不能使用add方法添加元素。

2.遍历全部的List集合元素
 List<String> list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 list.forEach(System.out::println);

输出结果为:

 苹果
 橘子
 香蕉
 李子
3.根据条件过滤元素
 List<Integer> list = new ArrayList<>();
 list.add(1);
 list.add(2);
 list.add(3);
 list.add(4);
 // 过滤大于2的所有元素
 List<Integer> collect = list.stream().filter(item -> item > 2).collect(Collectors.toList());
 System.out.println(collect);
4.对集合元素进行相关操作
 List<String> list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 List<String> collect = list.stream().map(item -> "水果-"+item).collect(Collectors.toList());
 System.out.println(collect);

输出结果:

 [水果-苹果, 水果-橘子, 水果-香蕉, 水果-李子]
5.对集合中的元素去重
 List<String> list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 List<String> collect = list.stream().distinct().collect(Collectors.toList());
 System.out.println(collect);

输出结果:

 [苹果, 橘子, 香蕉, 李子]
6.集合转Map
 List<EquipDataDto> list = new ArrayList<>();
 list.add(new EquipDataDto(1L, "34", "12"));
 list.add(new EquipDataDto(2L, "56", "12"));
 list.add(new EquipDataDto(3L, "78", "12"));
 Map<Long, String> collect = list.stream().collect(Collectors.toMap(EquipDataDto::getId, EquipDataDto::getCode));
 System.out.println(collect);

输出结果为:

 {1=34, 2=56, 3=78}
7.按照集合中某个元素进行分组
 List<EquipDataDto> list = new ArrayList<>();
 list.add(new EquipDataDto(1L, "34", "12"));
 list.add(new EquipDataDto(2L, "56", "12"));
 list.add(new EquipDataDto(3L, "78", "12"));
 
 Map<Long, List<EquipDataDto>> collect = list.stream().collect(Collectors.groupingBy(EquipDataDto::getId));
 System.out.println(collect);

输出结果为:

 {1=[EquipDataDto(id=1, code=34, path=12)], 2=[EquipDataDto(id=2, code=56, path=12)], 3=[EquipDataDto(id=3, code=78, path=12)]}
8.将集合对象中的某个字段使用符号连接
 List<EquipDataDto> list = new ArrayList<>();
 list.add(new EquipDataDto(1L, "34", "12"));
 list.add(new EquipDataDto(2L, "56", "12"));
 list.add(new EquipDataDto(3L, "78", "12"));
 
 String collect = list.stream().map(EquipDataDto::getCode).collect(Collectors.joining(","));
 System.out.println(collect);

输出结果为:

 34,56,78

相关文章

网友评论

      本文标题:Java Stream流使用技巧

      本文链接:https://www.haomeiwen.com/subject/cbcdzdtx.html