Java Stream流没用过?常用高频方法

内容分享3周前发布
0 1 0

概念

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

  • 代码简洁
  • 链式调用

Stream常用方法

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

© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录