TreeSet及常用Api

①   TreeSet为使用树来进行存储的Set接口提供了一个工具,对象按升序存储,访问和检索很快;

②   在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择;

③   构造方法:

a)   TreeSet();

b)   TreeSet(Collection c)

c)    TreeSet(Comparator comp)

d)    TreeSet(SortedSet ss)

总结:TreeSet的内部操作的底层数据是TreeMap,只是我们操作的是TreeMap的key;

创建一个Person类:

 class Person{
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

主方法中创建实例,添加元素,输出:

         TreeSet<Person> pset=new TreeSet<Person>();
pset.add(new Person("张三",20));
pset.add(new Person("李四",30));
pset.add(new Person("王五",40));
pset.add(new Person("小明",50));
System.out.println(pset);

输出结果:

报错,与TreeMap相同没有比较方法

解决方法与TreeMap中的一样,

方法一:实现Comparable接口的方法

class Person implements Comparable<Person>{ }

重构方法如下

     @Override
public int compareTo(Person o) {
if (this.age - o.getAge() > 0) {
return 1;
} else if (this.age - o.getAge() < 0) {
return -1;
}
return 0;
}

再在主方法中使用迭代器输出TreeMap中的值

         Iterator<Person> it = pset.iterator();
while(it.hasNext()){
Person p=it.next();
System.out.println(p.getName()+"--"+p.getAge());
}

输出结果:

张三--20

李四--30

王五--40

小明—50

方法二:使用匿名内部类

     TreeSet<Person> pset = new TreeSet<Person>(new Comparator<Person>() {

             @Override
public int compare(Person o1, Person o2) {
if(o1.getAge()>o2.getAge()){
return 1;
}
else if(o1.getAge()<o2.getAge()){
return -1;
}
return 0;
}
});

输出结果与上面相同

最新文章

  1. Android笔记——在布局文件中插入另一个布局文件
  2. Eclipse系列: 在Eclipse中用TODO标签管理任务(Task)(ZZ)
  3. Dell™ SAS 5/iR 集成适配器和适配器用户指南
  4. ZOJ3720 Magnet Darts(点在多边形内)
  5. HDU2648:Shopping(DKBR_hash)
  6. 转字符驱动实例gpio
  7. javaweb学习总结(三十九)——数据库连接池
  8. js比较两个日期大小
  9. Google永远不可能回到国内,只能是回忆
  10. PL/SQL集合 ----- varrays
  11. 指令汇C电子市场开发(一) ActionBar的使用
  12. jar包添加到maven本地仓库
  13. elasticsearch UNASSIGNED 处理
  14. java 后台 post请求 携带参数 远程操作 调用接口
  15. Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明2
  16. luogu 1004 方格取数
  17. 主从复制redis
  18. [转]K近邻算法
  19. cenos7切换阿里源
  20. Google 和 Baidu 常用的搜索技巧

热门文章

  1. PHP针对二维数组无限遍历变形研究
  2. Java Object Model(一)
  3. npm在linux即mac下更新时报错
  4. pre-empting taskintel手册-Chapter7-Task Management
  5. UVA 11992 Fast Matrix Operations (降维)
  6. java static block
  7. Bootstrap历练实例:模态框(Modal)插件
  8. HTML5&lt;aside&gt;元素
  9. Java动画 重力弹球 如鹏游戏引擎 精灵 设计一个小球加速落地又减速弹起并反复直到停止的Java程序
  10. 配置淘宝镜像,不使用怪异的cnpm