首先将你的集合处理成流,才可以使用此API。 接下来创建一个String类型的List,便于测试。 接下来展示具体参数使用方式。 例:需要过滤出在集合中,大于5的数字的集合。 filter内部使用的是lamda表达式,也是Java8的功能,o代表集合中每一个元素,o>5表示这个元素的值若大于5就返回true,就获取结果。collect表示聚合,Collectors.toList()表示将结果聚合到一个List集合。 例:需要将集合内的元素全部转换成String类型。 例: 需要从小到大排序。 例: 需要从大到小排序。 例: 打印集合内每个元素。 例: 计算集合中元素的和。 reduce中第一个参数为基数,即为初始值,i,j的定义为第一个和第二个操作数,i+j即为操作,此处为加法操作。 如果计算乘法,就不能设置初始值为0,因为0乘任何数都为0。 例: 将list聚合成一个key为元素,value为“item”+元素的Map。 结果:{1=item1, 2=item2, 3=item3, 4=item4, 6=item6, 7=item7} keyMapper表示设置为key的规则,valueMapper表示设置为value的规则。 Function.identity()表示当前本身元素。 Collectors.groupingBy(Function<? super T, ? extends K> classifier) 新建一个User实体,有姓名和年龄两个字段,并初始化一个集合便于测试。 例: 需要把名字相同的实体提出来放在一起,形成一个List集合。 结果:{han=[User [name=han, age=20], User [name=han, age=21]], ImapBox=[User [name=ImapBox, age=19]], 与李=[User [name=与李, age=18]]} 此处使用User实体的name属性进行分组。 User::getName 与 o -> o.getName() 含义相同,两者皆可传入。 Collectors.partitioningBy(Predicate<? super T> predicate) 例: 分别统计年龄大于等于20和小于20的学生信息 结果:{false=[User [name=与李, age=18], User [name=ImapBox, age=19]], true=[User [name=han, age=20], User [name=han, age=21]]} 可以看到返回结果是一个Map<Boolean, List<User>>,利用partitioningBy后生成的map,有且仅有两个元素,key固定为true和false,分别表示满足条件的信息和不不满足条件的信息。 此文列举了Stream部分方法的使用,具体更多的方法需要自己去深入了解。通过熟悉使用Stream的api之后,你会对它的处理方式爱不释手。一、开篇
二、实例
Stream<String> stream = list.stream();
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(7); list.add(4); list.add(6);
List<Integer> result = list.stream().filter(o -> o>5).collect(Collectors.toList());
List<String> result = list.stream().map(o->String.valueOf(o)).collect(Collectors.toList());
List<Integer> result = list.stream().sorted().collect(Collectors.toList());
List<Integer> result = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
list.stream().forEach(o->System.out.println(o)); list.forEach(o->System.out.println(o));
List<Integer> result = list.stream().distinct().collect(Collectors.toList());
Integer sum = list.stream().reduce(0, (i, j) -> i + j);
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Function.identity(), o -> String.format("item%s", o)));
List<User> list = new ArrayList<User>(); list.add(new User("与李", 18)); list.add(new User("ImapBox", 19)); list.add(new User("han", 20)); list.add(new User("han", 21));
Map<String, List<User>> group = list.stream().collect(Collectors.groupingBy(User::getName));
Map<Boolean, List<User>> partitioning = list.stream().collect(Collectors.partitioningBy(o -> o.getAge() >= 20));
三、结尾
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算