Java8 stream操作集合的使用示例

Java8流的使用

中间:一个中间操作链,形成一条流的流水线

终端:执行流水线,并能生成结果

操作类型返回类型使用的类型/函数式接口函数描述符
filter中间StreamPredicateT -> boolean
distinct中间Stream
skip中间Streamlong
limit中间Streamlong
map中间StreamFunction<T, R>T -> R
flatMap中间StreamFunction<T, Stream>T -> Stream
sorted中间StreamComparator(T, T) -> int
anyMatch终端booleanPredicateT -> boolean
noneMatch终端booleanPredicateT -> boolean
allMatch终端booleanPredicateT -> boolean
findAny终端Optional
findFirst终端Optional
forEach终端voidConsumerT -> void
collect终端RCollector<T, A, R>T ->
reduce终端OptionalBinaryOperator(T, T) -> T
count终端long

中间操作

filter的使用
    //筛选出以J开头的元素并打印
    Arrays.asList("Java", "JavaScript", "python", "PHP", "C#", "Golang", "Swift")
            .stream().filter(s -> s.startsWith("J"))
            .forEach(System.out::println);

    //输出结果: Java JavaScript
distinct的使用
    //剔除掉重复的元素
    Arrays.asList(1,2,1,3,2,5)
            .stream().distinct()
            .forEach(System.out::println);

    //输出结果: 1 2 3 5
skip的使用
    //跳过第一个元素
    Arrays.asList(1,2,1,3,2,5)
            .stream().skip(1)
            .forEach(System.out::println);
            
    //输出结果: 2 1 3 2 5
limit的使用
    //截取集合前面n个元素,如果n大于集合的size,则返回全部元素 如果 n < 0 抛异常 IllegalArgumentException
    Arrays.asList(1,2,1,3,2,5)
            .stream().limit(10)
            .forEach(System.out::println);
    }

    //输出结果: 1 2 1
map的使用
    //将数组中的元素全部转为大写 
    Arrays.asList("Java", "JavaScript", "python", "PHP", "C#", "Golang", "Swift")
            .stream().map(String::toUpperCase)
            .forEach(System.out::println);
    }

    //输出结果: JAVA JAVASCRIPT PYTHON PHP C# GOLANG SWIFT
    
    //将流转换成特定的流
    Integer sum =  Arrays.asList(1,2,1,3,2,5)
            .stream().mapToInt(value -> value).sum();

    //输出结果: 14
flatMap的使用
    List<String []> objLlist = Stream.of("Hello","World")
                    .map(word ->word.split(""))
                    .distinct()
                    .collect(Collectors.toList());

    //输出结果 [Ljava.lang.String;@43556938  [Ljava.lang.String;@3d04a311

    List strList = Stream.of("Hello","World")
            .map(word ->word.split(""))
            .flatMap(Arrays::stream)
            .distinct()
            .collect(Collectors.toList());

    //输出结果 H  e  l  o  W  r  d

终端操作

数组和集合的遍历
    //遍历集合并打印
    Arrays.asList("Java", "JavaScript", "python", "PHP", "C#", "Golang", "Swift")
            .forEach(System.out::println);
    
    //输出结果 Java JavaScript python PHP C# Golang Swift
anyMatch的使用
    //判断集合中的元素是否至少有一个满足某个条件
    boolean flag =  Arrays.asList(1,2,1,3,2,5)
            .stream().allMatch(s -> s > 3);

    //输出结果: true
noneMatch的使用
    //判断集合中的元素是否都不满足某个条件
    boolean flag =  Arrays.asList(1,2,1,3,2,5)
            .stream().noneMatch(s -> s > 3);

    //输出结果: false
allMatch的使用
    //判断集合中的元素是否都满足某个条件
    boolean flag =  Arrays.asList(1,2,1,3,2,5)
            .stream().allMatch(s -> s > 0);

    //输出结果: true
findAny的使用
    //判断集合中的元素是否都满足某个条件,有则打印一个元素
    Arrays.asList(1,2,1,3,2,5)
            .stream().filter(s -> s > 2)
            .findAny()
            .ifPresent(System.out::println);
    
    //输出结果: 3
        
    //判断集合中的元素是否都满足某个条件
    boolean flag = Arrays.asList(1,2,1,3,2,5)
            .stream()
            .filter(s -> s > 3)
            .findAny()
            .isPresent();

    //输出结果: true
findFirst的使用
    //判断集合中的元素是否都满足某个条件,有则打印第一符合的个元素
    Arrays.asList(1,2,1,3,2,5)
            .stream().filter(s -> s > 2)
            .findFirst()
            .ifPresent(System.out::println);

    //输出结果: 3
collect的使用
    //将集合中筛选出符合条件的并放入集合中返回
    List<String> list = 
            Arrays.asList("Java", "JavaScript", "python", "PHP", "C#", "Golang", "Swift")
            .stream()
            .filter(s -> s.startsWith("J"))
            .collect(Collectors.toList());
        
    //输出结果: Java JavaScript
    
    
reduce的使用
    //对numbers中的元素求和
    Arrays.asList(1, 2, 1, 3, 3, 2, 4)
            .stream()
           .reduce(0, Integer::sum); // 16
           
       //求集合中的最大值
    Arrays.asList(1,2,1,3,2,5)
            .stream()
            .reduce(Integer::max)
            .ifPresent(System.out::println);

    //输出结果: 5
count的使用
    //将集合中筛选出符合条件的并返回符合条件的个数
    Long count =
            Arrays.asList("Java", "JavaScript", "python", "PHP", "C#", "Golang", "Swift")
            .stream()
            .filter(s -> s.startsWith("J"))
            .count();

    //输出结果: 2
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值