集合框架---TreeSet存储自定义对象
2015-11-20 15:19
399 查看
/* |---Set:元素是无序的(存入和取出的顺序不一定一致),元素不可以重复。 |---HashSet:底层数据结构是哈希表。 HashSet是如何保证元素唯一性的呢? 是通过元素的两个方法,hashCode和equals来完成。 如果元素的hashCode值相同,才会判断equals是否为true。 如果元素的hashCode值不同,才会调用equals。 需要注意的是,对于判断元素是否存在,以及删除等操作,依赖的方法时元素的hashCode和equals方法。 |---TreeSet:可以对Set集合中的元素进行排序。 Set集合的功能和Collection是一致的。 */ import java.util.Iterator; import java.util.TreeSet; public class SetDemo { public static void main(String[] args) { TreeSet ts=new TreeSet(); ts.add(new Student("张三001",22)); ts.add(new Student("张三002",25)); ts.add(new Student("张三003",24)); ts.add(new Student("张三004",23)); ts.add(new Student("张三005",23)); //System.out.println(ts); //迭代方法取出集合中的元素 Iterator it=ts.iterator(); while(it.hasNext()) { Student stu=(Student)it.next(); System.out.println(stu.getName()+"::"+stu.getAge()); } } } //自定义对象 class Student implements Comparable { private String name; private int age; Student(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Object obj) { // TODO 自动生成的方法存根 if(!(obj instanceof Student)) { throw new RuntimeException("不是学生对象"); } Student s=(Student)obj; System.out.println(this.name+".....compare to........"+s.name); if(this.age>s.age) return 1; if(this.age==s.age) { //排序时,当主要条件相同时,一定要判断一下次要条件 //如果不加上这句话,输出时,年龄相同的元素输出一个 return this.name.compareTo(s.name); } //return 0; //系统认为两个是相同对象,视为一个 return -1; } }
结果:
相关文章推荐
- 关于Spring的69个面试问答——终极列表
- 虚拟机ping不通主机
- 谈谈Jquery ajax中success和complete有哪些不同点
- iOS移动开发CoreDate讲解
- Spring在代码中获取bean的几种方式
- C# 自定义特性
- 【转】WINSOCKET客户端编程以及JMETER外部调用
- SQL 判断表是否存在
- [转载]linux下svn常用指令
- 【Android】让引导页每次在更新之后都出现的实现方法
- 使用JS对数组进行排序,设置计时器和计数器
- 关于 Xcode7网络请求的Http 协议改为 Https 协议的程序修改
- 表空间使用率
- IOS沙盒机制(SandBox)
- Java问题总结
- flex+java将数据库里的数据导出到指定目录下excel表里(poi)
- js常用的封装函数
- HTML5 Geolocation(地理位置)
- Java多线程实例
- Nginx负载均衡配置