Stream:对集合进行操作

Collection有stream()方法
ArrayArrays.stream(...)
MapMap.entrySet().stream()

Stream中的方法

方法说明
Stream<T> filter(Predicate<? super T> predicate);数据过滤,保留满足条件的
<R> Stream<R> map(Function<? super T, ? extends R> mapper);数据映射,T → R
Stream<T> distinct();数据去重,与对象的equals()方法有关
Stream<T> sorted();数据排序,对象需实现Comparable接口
Stream<T> sorted(Comparator<? super T> comparator);数据排序,Comparator
Stream<T> peek(Consumer<? super T> action); 数据流结束之后才会执行
Stream<T> limit(long maxSize);数据过滤
Stream<T> skip(long n);跳过n个数据
void forEach(Consumer<? super T> action);数据流结束操作
<A> A[] toArray(IntFunction<A[]> generator);转变为A[]数组
 T reduce(T identity, BinaryOperator<T> accumulator);
<R, A> R collect(Collector<? super T, A, R> collector);使用收集器收集数据
 Optional<T> min(Comparator<? super T> comparator);最小值
 Optional<T> max(Comparator<? super T> comparator);最大值
long count();计数
boolean anyMatch(Predicate<? super T> predicate);
 boolean allMatch(Predicate<? super T> predicate);
 boolean noneMatch(Predicate<? super T> predicate);
 Optional<T> findFirst();Optional<T> ,Stream中的一个数据
Optional<T> findAny();
 public static<T> Stream<T> of(T t);
public static<T> Stream<T> of(T... values);

数据排序Comparator数据收集Collectors

 public static void main(String[] args) {
        Map<String, Integer> map = MapUtil.builder(new HashMap<String, Integer>())
                .put("AAA", 4).put("BBB", 10).put("CCC", 8).put("DDD", 6)
                .build();


        Map<String, Integer> sorted = map.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v2, LinkedHashMap::new));

        System.out.println(sorted);
    }
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("A",5);
        map.put("B",1);
        map.put("C",6);

        String collect = map.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .map(Map.Entry::getKey)
                .collect(Collectors.joining(","));

        System.out.println(collect);


    }
 public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("A",5);
        map.put("B",1);
        map.put("C",6);
        map.put("D",1);

        Map<Integer, List<Map.Entry<String, Integer>>> collect = map.entrySet().stream()
                .collect(Collectors.groupingBy(Map.Entry::getValue));


    }
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("A",5);
        map.put("B",1);
        map.put("C",6);
        map.put("D",1);

        Map<Integer, Long> collect = map.entrySet().stream()
                .collect(Collectors.groupingBy(Map.Entry::getValue, Collectors.counting()));

    }
  public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("A",5);
        map.put("B",1);
        map.put("C",6);
        map.put("D",1);

        Map<Integer, Set<String>> collect = map.entrySet().stream()
                .collect(Collectors.groupingBy(Map.Entry::getValue,
                        Collectors.mapping(Map.Entry::getKey, Collectors.toSet())));

    }

Optional

    public static void main(String[] args) {
        boolean present = Optional.ofNullable(null).isPresent();
        String o = Optional.ofNullable("B").filter("A"::equals).orElse("***");

        System.out.println(present);
        System.out.println(o);

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值