Lambda杂记

it2025-04-19  6

       流表面看起来和集合类似        1.流并不存储其元素,这些元素可能存储在底层的集合中,或者按需生成        2.流的操作不会修改其数据源        3.流的操作是尽可能的惰性执行,意味着直至需要结果时,操作才会执行。

       操作流时的典型流程        1.创建一个流        2.指定将初始流转换为其他流的中间操作,可能包含多个步骤        3.应用终止操作,从而产生结果。这个操作会强制执行之前的惰性操作。

       Stream(),parallelStream(),产生当前集合所有元素的顺序流或者并行流

       流的转换会产生一个新的流,它的元素派生于另一个流中的元素,

       Filter 产生一个流,包含当前流中所有满足断言条件的元素。        Map产生一个流,应用于当前流中所有元素所产生的的结果        FlatMap <Function<? super T,? extends Stream<? extends R>> mapper>        通过将mapper应用于当前流中所有元素产生的结果连接到一起而获得的。

       调用stream.limit会返回一个新的流,在n个元素之后结束。对于裁剪无限流的尺寸非常有用        Stream randoms = Stream.generate(Math::random).limit(100);        会产生一个包含100个随机数的流        Stream.skip(n)正好相反,会丢弃前n个元素

       可以使用concat方法将两个流连接起来        Stream combined = Stream.concat(letter(“Hello”), letter(“World”));

       Diatinct会返回一个流,剔除重复元素按顺序产生,

       流的排序        Stream long = words.stream().sorted(Compartator.comparing(String::length).reversed());        最长的字符串排在最前面

       Count 会返回流中元素的数量        Max和min 返回最大值和最小值。返回的是一乐类型Optional的值        FindFirst返回的是非空集合中的第一个值

       OPtional start = words.filter(s -> s.startsWith(“Q”)).findFirst;        找到第一个以Q开头的单词

       不强调第一个匹配,任意一个匹配都可以,就使用findAny方法

       只想知道是否匹配使用anyMatch。        所有元素 allMatch        没有任何元素 noneMatch        这3个都是boolean类型,返回true,终端操作,

       Optional类型        Optional对象是一种包装器对象,要么包装了类型T的对象,要么没有包装任何对象。

       result = noVowels().limit(10)         .collect(Collectors.joining(", "));        joining的作用就是加分隔符。

       Long getCount() 产生汇总后的元素个数        getSum(),Getaverage()产生汇总后的元素的总合或者平均值,或者在没有任何元素时返回0        getMax(),getMin(),获得汇总的最大值和最小值。

       GroupingBy产生一个搜集器。        Counting会对产生搜集到的元素个数。        Map<String, Long> Counts = locales.collect(groupingBy(Locale::getCountry,counting()));

       maxBy和minBy会接受一个比较器,并产生下游元素中的最大值或最小值        Map<String,Optional> stateTo =        cities.collect(groupingBy(City::getState,MaxBy(Comparator.comparing(City::getPopulation()))));        这个可以产生每个州最大的城市。

       Reduce 方法是一种用于从流中计算某个值的通用机制,        Optional sum = values.stream().reduce((x,y) ->x + y);        当你有一个对象流的时候,可以使用mapToInt,mapToLong和mapToDouble将其转换为基本类型。

       Range(),rangeClosed(),产生一个由给定范围内的整数构成的XXXStream。

最新回复(0)