Set容器——TreeSet及常用API
2024-09-01 22:19:28
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;
}
});
输出结果与上面相同
最新文章
- Android笔记——在布局文件中插入另一个布局文件
- Eclipse系列: 在Eclipse中用TODO标签管理任务(Task)(ZZ)
- Dell™ SAS 5/iR 集成适配器和适配器用户指南
- ZOJ3720 Magnet Darts(点在多边形内)
- HDU2648:Shopping(DKBR_hash)
- 转字符驱动实例gpio
- javaweb学习总结(三十九)——数据库连接池
- js比较两个日期大小
- Google永远不可能回到国内,只能是回忆
- PL/SQL集合 ----- varrays
- 指令汇C电子市场开发(一) ActionBar的使用
- jar包添加到maven本地仓库
- elasticsearch UNASSIGNED 处理
- java 后台 post请求 携带参数 远程操作 调用接口
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明2
- luogu 1004 方格取数
- 主从复制redis
- [转]K近邻算法
- cenos7切换阿里源
- Google 和 Baidu 常用的搜索技巧
热门文章
- PHP针对二维数组无限遍历变形研究
- Java Object Model(一)
- npm在linux即mac下更新时报错
- pre-empting taskintel手册-Chapter7-Task Management
- UVA 11992 Fast Matrix Operations (降维)
- java static block
- Bootstrap历练实例:模态框(Modal)插件
- HTML5<;aside>;元素
- Java动画 重力弹球 如鹏游戏引擎 精灵 设计一个小球加速落地又减速弹起并反复直到停止的Java程序
- 配置淘宝镜像,不使用怪异的cnpm