Java8のStreamのシンプルで実用的な機能

最近、同僚に勧められた技術記事で、先輩が書いた Stream 用 Ja​​va8 の簡単な使用例が書かれており、よく利用しているのですが、うまくまとめられていませんでした。この記事を読んで、とても実践的だと感じました。また、それを簡単に要約するのにも役立ちます。

オブジェクトのコレクションから属性のコレクションへ

//转List集合(两种写法都是可以的)
List<Integer> idsList = list.stream().map(user -> user.getId()).collect(Collectors.toList());
List<Integer> idsList = list.stream().map(User::getId).collect(Collectors.toList());
//转Set集合(两种写法都是可以的)
Set<Integer> idsSet = list.stream().map(user -> user.getId()).collect(Collectors.toSet());
Set<Integer> idsSet = list.stream().map(User::getId).collect(Collectors.toSet());

マップするオブジェクトのコレクション

//两种写法都可以
Map<Integer, User> userMap = list.stream().collect(Collectors.toMap(u -> u.getId(), a -> a, (k1, k2) -> k1));
Map<Integer, User> userMap = list.stream().collect(Collectors.toMap(User::getId, a -> a, (k1, k2) -> k1));

検索カテゴリ: 一致する条件を検索します

//返回任意一个
User any = list.stream().findAny().get();
//返回第一个
User first = list.stream().findFirst().get();
//返回最大的id
Integer idMax = list.stream().map(user -> user.getId()).max((s1, s2) -> s1.compareTo(s2)).get();
//返回最小的id
Integer idMin = list.stream().map(user -> user.getId()).min((s1, s2) -> s1.compareTo(s2)).get();

一致するクラス

//必须所有匹配
boolean b = list.stream().allMatch(user -> user.getName().equals("admin"));
//任何一个匹配
boolean b = list.stream().anyMatch(user -> user.getName().equals("admin"));

フィルタクラス

//过滤
Stream<User> userStream = list.stream().filter(user -> user.getId() > 5);
//去重
List<User> distinct = list.stream().distinct().collect(Collectors.toList());
//根据某一个属性去重
ArrayList<User> distinctList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getId))), ArrayList::new));
//根据某一属性排序
List<User> sorted = list.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
//分页
List<User> pageList = list.stream().skip((pageNumber)*pageSize).limit(pageSize).collect(Collectors.toList());

おすすめ

転載: blog.csdn.net/weixin_43650254/article/details/105952154