[黑马程序员]集合--TreeSet
2014-03-28 22:07
190 查看
/* * Set:无序,不可以重复元素 * |--HashSet:数据结构是哈希表。线程是非同步的 * 保证元素唯一性的原理:判断元素的hashCode值是否相同。 * 如果相同,会继续判断元素的equals方法是否为true。 * |--TreeSet:可以对Set集合中的元素进行排序 * 底层数据结构是二叉树 * 保证元素唯一性的依据是: compareTo方法return的值。 正数,大,0,等,负数,小 * * TreeSet排序的第一种方式:让元素自身具备比较性。 * 元素需要实现Comparable的接口,覆盖compareTo方法。 * 这种方式也称为元素的自然排序,或者叫做默认顺序。 * * * * * 需求: * 往 TreeSet集合中存储自定义对象学生, * 然后按照学生的年龄进行排序 * * 记住,排序时,当主要条件相同时,一定要判断次要条件 */ package test.itheima; import java.util.Iterator; import java.util.TreeSet; public class TreeSetDemo { /** * @param args */ public static void main(String[] args) { TreeSet<Student> ts = new TreeSet<Student>(); ts.add(new Student("lisi22", 22)); ts.add(new Student("lisi20", 20)); ts.add(new Student("lisi40", 40)); ts.add(new Student("lisi30", 30)); ts.add(new Student("lisi36", 36)); ts.add(new Student("lisi90", 90)); ts.add(new Student("lisi50", 50)); 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 this.name; } public int getAge() { return this.age; } @Override public int compareTo(Object o) { if (!(o instanceof Student)) { throw new RuntimeException("不是学生对象"); } Student s = (Student) o; System.out.println(this.name + "---compare to---" + s.name); if (this.age != s.age) { System.out.println(this.age - s.age); return this.age - s.age; } else { // if(this.name.equals(s.name)){ // return 0; // } // return 1; System.out.println("--- "+(this.name.compareTo(s.name))); return this.name.compareTo(s.name); } } }
相关文章推荐
- 黑马程序员--07.集合框架--08.【TreeSet的Comparator排序】【TreeSet总结】
- 黑马程序员--07.集合框架--07.【TreeSet】【TreeSet底层的二叉树】
- 黑马程序员_JAVA笔记14——集合框架(List、HashSet、TreeSet)
- 黑马程序员面试题集合1(ArrayList,LinkedList,Vector,Iterator,ListIterator,HashSet,TreeSet,JDK1.5新特性泛型)
- 黑马程序员_温习 集合三 (个人笔记)摘要(HashSet---TreeSet)
- 黑马程序员——第八篇-可变参数、set集合、HashSet、TreeSet
- 黑马程序员--java集合TreeSet
- 黑马程序员 集合ArrayList、HashSet和TreeSet的使用
- 黑马程序员------集合框架(No.3)(Set、TreeSet、HashSet)
- 黑马程序员_集合2_(HashSet、TreeSet、JDK1.5新特性泛型)
- 黑马程序员——集合(中)——TreeSet、泛型
- 黑马程序员——17,集合,TreeSet,二叉树,泛型
- 黑马程序员_集合2(HashSet,TreeSet,JDK1.5新特性泛型)
- 黑马程序员------毕老师视频笔记第13-17天------集合Collection-Set-(HashSet、TreeSet)
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- 黑马程序员---集合一
- 黑马程序员_Java(对象数组,集合Collection,集合list)
- 黑马程序员——JAVA基础----集合框架(三)
- 黑马程序员--07.集合框架--并发访问异常理解:一个单线程程序的多线程运行思想【个人总结】
- 黑马程序员_集合框架中的几组比较