使用java 中的stream 的filter 过滤集合中 重复的元素
时间: 2023-03-23 13:00:18 浏览: 102
可以使用Java 8中的流(stream)和distinct()方法来过滤集合中的重复元素。具体的实现方式如下:
```
List<Integer> list = Arrays.asList(1, 2, 3, 2, 4, 3, 5);
List<Integer> distinctList = list.stream().distinct().collect(Collectors.toList());
System.out.println(distinctList);
```
这段代码将输出结果:[1, 2, 3, 4, 5],即过滤掉了集合中的重复元素。
相关问题
java stream filter过滤器
Java Stream是Java 8引入的一个API,它可以方便地对Java集合进行处理。其中,filter过滤器是Stream API提供的一个方法,它可以根据某个条件过滤出符合条件的元素。
使用filter方法时,需要先传入一个Predicate(谓词)对象,该对象定义了过滤规则。然后,filter方法会对Stream中的每个元素执行Predicate中定义的条件,如果元素满足条件,则被保留下来,否则被过滤掉。
例如,可以使用filter过滤器过滤出一个List中所有大于5的元素,代码如下:
List<Integer> list = Arrays.asList(3, 5, 7, 8, 2, 4);
list.stream()
.filter(i -> i > 5)
.forEach(System.out::println);
运行以上代码,会输出7和8,符合条件的元素被保留下来了。
除了filter过滤器外,Stream API还提供了许多其他有用的方法,例如map、reduce、sorted等等,可以方便地对集合进行转换、计算、排序等操作。使用Stream API可以让代码更简洁、易读、易维护,值得去学习和使用。
stream流filter过滤集合
使用Java Stream的filter()方法可以对集合进行过滤。该方法接收一个Predicate参数,用于指定过滤条件。在过滤时,只会保留满足条件的元素,并返回一个新的Stream对象。
以下是一个示例代码,展示如何使用filter()方法过滤集合中身高在1.8米及以上的男生:
```
List<StudentInfo> boys = studentList.stream()
.filter(s -> s.getGender() && s.getHeight() >= 1.8)
.collect(Collectors.toList());
```
在上述代码中,我们首先通过stream()方法将集合转换为一个Stream对象。然后,使用filter()方法指定过滤条件,判断是否为男生(通过getGender()方法返回布尔值)且身高是否大于等于1.8米。最后,通过collect()方法将满足条件的元素收集到一个新的List中。
你可以根据实际需求修改filter()方法的条件,以实现不同的过滤效果。
阅读全文