版权声明:无意呢。 https://blog.csdn.net/qq_41900081/article/details/85712223
默认情况下,TreeSet中的数据是从小到大排序的,不过TreeSet的构造方法支持传入一个Comparator public TreeSet(Comparator comparator) ,通过这个构造方法创建一个TreeSet,使得其中的的数字是倒排序的
参考代码
package stack;
public class Hero {
private String name;
private float hp;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Hero(String name, float hp) {
super();
this.name = name;
this.hp = hp;
}
public float getHp() {
return hp;
}
public void setHp(float hp) {
this.hp = hp;
}
@Override
public String toString() {
return "[name=" + name + ", hp=" + hp + "]";
}
}
package review5;
import java.util.Comparator;
import java.util.TreeSet;
import stack.Hero;
public class TestTreeSet {
public static void main(String[] args) {
// 匿名类写法
// Comparator<Hero> c = new Comparator<Hero>() {
//
// @Override
// public int compare(Hero h1, Hero h2) {
// if(h1.getHp() > h2.getHp()) return -1;
// else if(h1.getHp() < h2.getHp()) return 1;
// else return 0;
//
// }
// };
// TreeSet<Hero> ts = new TreeSet<>(c);
// Lambda代替匿名类的写法
TreeSet<Hero> ts = new TreeSet<>((h1,h2) -> h1.getHp() > h2.getHp() ? -1 : h1.getHp() < h2.getHp() ? 1 : 0);
for(int i = 0; i < 10; i++) {
//随机生成英雄血量
float random = (float) (Math.random()*100);
Hero h = new Hero("Hero "+i,random);
//插入TreeSet中
ts.add(h);
}
System.out.println("初始化:");
for(Hero t : ts) {
System.out.println(t);
}
//聚合操作方式遍历筛选数据
System.out.println("聚合操作方式遍历筛选数据:");
ts.stream()
.filter(h -> h.getHp() > 30 && h.getHp() <60)
.forEach(h -> System.out.println(h));
}
}
测试结果