Java自学-集合框架 聚合操作

聚合操作

步骤 1 : 聚合操作

JDK8之后,引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素。

像这样:

String name =heros
.stream()
.sorted((h1,h2)->h1.hp>h2.hp?-1:1)
.skip(2)
.map(h->h.getName())
.findFirst()
.get();

但是要用好聚合,必须先掌握Lambda表达式

![聚合操作]( https://img-blog.csdnimg.cn/20190603090059343.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2plZGR6ZA==,size_16,color_FFFFFF,t_70)

package lambda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

import charactor.Hero;

public class TestAggregate {

public static void main(String[] args) {
Random r = new Random();
List heros = new ArrayList();
for (int i = 0; i < 10; i++) {
heros.add(new Hero("hero " + i, r.nextInt(1000), r.nextInt(100)));
}

System.out.println("初始化集合后的数据 (最后一个数据重复):");
System.out.println(heros);

//传统方式
Collections.sort(heros,new Comparator() {
@Override
public int compare(Hero o1, Hero o2) {
return (int) (o2.hp-o1.hp);
}
});

Hero hero = heros.get(2);
System.out.println("通过传统方式找出来的hp第三高的英雄名称是:" + hero.name);

//聚合方式
String name =heros
.stream()
.sorted((h1,h2)->h1.hp>h2.hp?-1:1)
.skip(2)
.map(h->h.getName())
.findFirst()
.get();

System.out.println("通过聚合操作找出来的hp第三高的英雄名称是:" + name);

}
}

posted on 2020-01-09 19:41  半米高峰  阅读(321)  评论(0)    收藏  举报

导航