集合代码利用jdk8Stream特性优化

数组转map
在这里插入图片描述
两个list合并
在这里插入图片描述
flatMap和mapToObj使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

collection() 用于收集方法
sorted() 排序
list.foreach(Sstem.out::print) 用来遍历流中的数据 ,循环打印
filter() 用于对Stream流中的数据进行过滤,满足条件的元素被筛选出来
distinct()去重,通过元素的hashcode()和equals()去重
map() 创建新数组,该数组中的元素是每调用一次后提供的函数返回值用于类型转换

findfirst()
skip()用于跳过n个元素,配合limit实现分页
flatmap()

Comparator接口 比较排序作用

Stream流
作用
集合的过滤
集合元素的改造
集合元素的去重
多集合元素的:差集,交集(可以用redis的set,zset实现)
集合元素的聚合操作(min,max,count,累加)

Stream流的常用创建方法
1.1使用Collection下的stream()和parallesStream()方法

        List<String> list = new ArrayList<>();
        Stream<String> stream = list.stream();//获取一个顺序流
        Stream<String> parallelStream = list.parallelStream();//获取一个并行流

1.2使用Arrays中的stream()方法,将数组转成流

        Integer[] nums = new Integer[10];
        Stream<Integer> stream = Arrays.stream(nums);

        Stream<String> arraStream = Arrays.asList("1", "2").stream();        

1.3使用Stream中的静态方法:of()、itreate()、generate()

		Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);

        Stream<Integer> limit = Stream.iterate(0, (x) -> x + 2).limit(6);
        limit.forEach(System.out::println);

        Stream<Double> limit1 = Stream.generate(Math::random).limit(2);
        limit1.forEach(System.out::println);

============================

forEach方法,用来遍历流中的数据
是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法

Stream流中的常用方法_filter:用于对Stream流中的数据进行过滤
Stream filter(Predicate<? super T> predicate);
filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤
Predicate中的抽象方法:
boolean test(T t);

Stream流中的常用方法_map:用于类型转换
如果需要将流中的元素映射到另一个流中,可以使用map方法.
Stream map(Function<? super T, ? extends R> mapper);
该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。
Function中的抽象方法:
R apply(T t);

Stream流中的常用方法_count:用于统计Stream流中元素的个数
long count();
count方法是一个终结方法,返回值是一个long类型的整数
所以不能再继续调用Stream流中的其他方法了

Stream流的收集方法
R collect(Collector collector)

它是通过工具类Collectors提供了具体的收集方式
    public static <T> Collector toList():把元素收集到List集合中
    public static <T> Collector toSet():把元素收集到Set集合中
    public static Collector toMap(Function keyMapper,Function valueMapper):把元素收集到Map集合中

Stream流中的常用方法_skip:用于跳过元素
如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流:
Stream skip(long n);
如果流的当前长度大于n,则跳过前n个;否则将会得到一个长度为0的空流。

Stream流中的常用方法_concat:用于把流组合到一起
如果有两个流,希望合并成为一个流,那么可以使用Stream接口的静态方法concat
static Stream concat(Stream<? extends T> a, Stream<? extends T> b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值