387 stream中间操作:filter

387 Stream流中间操作之filter

1

Stream <T> filter(Predicate predicate)

过滤

2

Stream <T> limit(long maxSize)

返回此流中的元素组成的流,以指定的个数截取

3

Stream <T> skip(long n)

跳过指定个数的数据,返回剩余元素组成的流

4

Stream <T> concat(Stream a, Stream b)

合并2个流为1个

5

Stream <T> distinct()

返回由该流的不同元素(根据Object.equals(Object))组成的流

6

Stream <T> sorted()

返回自然排序的流

Stream <T> sorted(Comparator comparator)

返回comparator排序的流

<R> Stream <R> map(Function mapper)

返回经过指定操作的流,Function接口中的方法R apply(T t)

intStream mapToInt(ToIntFunction mapper)

返回一个经过指定操作的IntStream流,

intStream:原始int流

ToIntFunction接口中的方法int applyAsInt(T value)

Stream <T> forEach()

Stream <T> count()

>Predicate: boolean    test(T t),根据给定的参数做判断,返回一个布尔值。

---------------------------------------------

package e385aso;

import java.util.ArrayList;

public class Demo387Filter {

    public static void main(String[] args) {

        ArrayList<String> al385 = new ArrayList();

        al385.add("HELEN");

        al385.add("AMY");

        al385.add("ALICE");

        al385.add("ANDREW");

        al385.add("ANGEL");

        al385.add("HEMINGWAY");

        al385.add("HI");

        al385.add("HEY");

        al385.stream().filter((String s) -> {

            return s.startsWith("H");

        }).forEach(System.out::println);

        System.out.println("-");

        al385.stream().filter(s -> s.startsWith("H")).filter(s -> s.length() < 5).forEach(System.out::println);

    }

}

//HELEN

//HEMINGWAY

//HI

//HEY

//-

//HI

//HEY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8中的Stream提供了多种中间操作(Intermediate Operations),这些操作都是返回一个新的Stream对象,可以链式调用多个中间操作。下面介绍一下常用的中间操作: 1. `filter(Predicate<T> predicate)`: 过滤Stream中的元素,保留符合条件的元素。 ```java List<String> list = Arrays.asList("apple", "banana", "orange", "watermelon", "pear"); list.stream() .filter(s -> s.length() > 5) // 只保留长度大于5的元素 .forEach(System.out::println); ``` 2. `map(Function<T, R> mapper)`: 对Stream中的元素进行映射,生成一个新的Stream。 ```java List<String> list = Arrays.asList("apple", "banana", "orange", "watermelon", "pear"); list.stream() .map(String::toUpperCase) // 将元素转换成大写形式 .forEach(System.out::println); ``` 3. `flatMap(Function<T, Stream<R>> mapper)`: 对Stream中的元素进行映射,生成一个新的Stream,然后将多个Stream合并成一个Stream。 ```java List<List<Integer>> lists = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4, 5), Arrays.asList(6, 7, 8, 9)); lists.stream() .flatMap(List::stream) // 将多个List合并成一个Stream .forEach(System.out::println); ``` 4. `distinct()`: 去除Stream中重复的元素。 ```java List<Integer> list = Arrays.asList(1, 2, 3, 2, 1, 4, 5, 4); list.stream() .distinct() // 去除重复元素 .forEach(System.out::println); ``` 5. `sorted()`: 对Stream中的元素进行排序。 ```java List<Integer> list = Arrays.asList(5, 2, 8, 1, 9, 3, 6); list.stream() .sorted() // 对元素进行自然排序 .forEach(System.out::println); ``` 6. `limit(long maxSize)`: 限制Stream中元素的数量。 ```java List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.stream() .limit(5) // 只取前5个元素 .forEach(System.out::println); ``` 7. `skip(long n)`: 跳过Stream中的前n个元素。 ```java List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.stream() .skip(5) // 跳过前5个元素 .forEach(System.out::println); ``` 中间操作可以组合使用,例如: ```java List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.stream() .filter(n -> n % 2 == 0) // 过滤出偶数 .map(n -> n * n) // 对偶数进行平方 .sorted() // 对结果进行排序 .forEach(System.out::println); ``` 上面的代码首先过滤出偶数,然后对偶数进行平方,最后对结果进行排序并打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值