专业的JAVA编程教程与资源

网站首页 > java教程 正文

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

temp10 2025-03-05 21:39:30 java教程 88 ℃ 0 评论

概念

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

  • 代码简洁
  • 链式调用

Stream常用方法

1.将数组变为当作List操作

 String[] strArr = {"1", "2", "3", "4"};
 List strList = Arrays.asList(strArr);

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

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

2.遍历全部的List集合元素

 List list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 list.forEach(System.out::println);

输出结果为:

 苹果
 橘子
 香蕉
 李子

3.根据条件过滤元素

 List list = new ArrayList<>();
 list.add(1);
 list.add(2);
 list.add(3);
 list.add(4);
 // 过滤大于2的所有元素
 List collect = list.stream().filter(item -> item > 2).collect(Collectors.toList());
 System.out.println(collect);

4.对集合元素进行相关操作

 List list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 List collect = list.stream().map(item -> "水果-"+item).collect(Collectors.toList());
 System.out.println(collect);

输出结果:

 [水果-苹果, 水果-橘子, 水果-香蕉, 水果-李子]

5.对集合中的元素去重

 List list = new ArrayList<>();
 list.add("苹果");
 list.add("橘子");
 list.add("橘子");
 list.add("香蕉");
 list.add("李子");
 List collect = list.stream().distinct().collect(Collectors.toList());
 System.out.println(collect);

输出结果:

 [苹果, 橘子, 香蕉, 李子]

6.集合转Map

 List 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 collect = list.stream().collect(Collectors.toMap(EquipDataDto::getId, EquipDataDto::getCode));
 System.out.println(collect);

输出结果为:

 {1=34, 2=56, 3=78}

7.按照集合中某个元素进行分组

 List 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> 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 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



Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表