操作Collection集合的一些方法

操作Collection集合的一些方法

1. Predicate操作集合 removeIf(Predicate filter)

该方法将批量的删除符合filter的所有元素
Predicate时函数式接口,因此可以用Lambda表达式作为参数

//创建一个集合books
......
//使用Lambda表达式过滤集合
books.removeIf(ele -> (((String)ele).length()) < 10);

2.使用Stream操作集合

独立使用Stream的步骤如下:

  1. 使用Stream或者XxxStream的builder()方法创建该Stream对应的Builder
  2. 重复调用builder的add()方法向该流中添加多个元素
  3. 调用Builder的build()方法获取对应的Stream
  4. 调用Stream的聚集方法
    //对于大部分的聚集方法而言,每个Stream只能执行一次
IntStream is = IntStream.builder()
               .add(20)
               .add(13)
               .add(-2)
               .add(18)
               .build();
//下面调用的聚集方法每次只能执行一行
System.out.println("is所有元素的最大值:" + is.max().getAsInt());
System.out.println("is所有元素的最小值:" + is.min().getAsInt());
System.out.println("is所有元素的总和:" + is.sum());
System.out.println("is所有元素的总数:" + is.count());
System.out.println("is所有元素的平均数:" + is.average());;
System.out.println("is所有元素的平方是否都大于20 :"  
                    + is.allMatch(ele -> ele *ele > 20));
System.out.println("is是否包含任何元素的平方大于20:" 
                    + is.anyMatch(ele -> ele * ele > 20));
//将is映射成为一个新的Stream,新Stream的每个Stream是原Stream元素的2倍加1
IntStream newIs = is.map(ele -> ele * 2 + 1);
//使用方法引用的方式来遍历集合元素
newIs.forEach(System.out::println);  

聚集操作分为中间的和末端的
5. 中间方法 中间方法的返回值是另一个流
6. 末端方法 :执行末端方法后该流将会被消耗不可再用

Collection接口提供了一个stream()的默认方法,该方法可以返回该集合对应的流

//创建books集合
....
//统计书名中包含"疯狂"子串的图书数量
System.out.println(books.stream()
                        .filter(ele -> ((String)ele).contains("疯狂"))
                        .count());
//先调用Collection的Stream()方法将集合转换成为Stream
//再调用Stream的mapToInt方法获取原有Stream对应的IntStream
books.stream().mapToInt(ele -> ((String)ele).length())
     .forEach(System.out::println);

发布了8 篇原创文章 · 获赞 0 · 访问量 119

猜你喜欢

转载自blog.csdn.net/weixin_37613476/article/details/104341861