
可以按照添加对象的属性,指定排序
可以只按照一个属性添加对象的属性,指定排序
红黑树
看第一个数,添加的数第一个小放左边,添加的数第一个大放右边
不可以放相同的数
自然排序:(实现Comparable接口)判断标准CompareTo返回0,不是用equals()
定制排序:(实现Comparator接口)判断标准Compare返回0,不是用equals()
public void test1(){TreeSet set = new TreeSet();//失败:不能添加不同类的对象// set.add(123);// set.add(456);// set.add("AA");// set.add(new User("Tom",12));//举例一:// set.add(34);// set.add(-34);// set.add(43);// set.add(11);// set.add(8);//举例二:set.add(new User("Tom",12));set.add(new User("Jerry",32));set.add(new User("Jim",2));set.add(new User("Mike",65));set.add(new User("Jack",33));set.add(new User("Jack",56));Iterator iterator = set.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}
public void test2(){Comparator com = new Comparator() {//按照年龄从小到大排列@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof User && o2 instanceof User){User u1 = (User)o1;User u2 = (User)o2;return Integer.compare(u1.getAge(),u2.getAge());}else{throw new RuntimeException("输入的数据类型不匹配");}}};TreeSet set = new TreeSet(com);set.add(new User("Tom",12));set.add(new User("Jerry",32));set.add(new User("Jim",2));set.add(new User("Mike",65));set.add(new User("Mary",33));set.add(new User("Jack",33));set.add(new User("Jack",56));Iterator iterator = set.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}
TreeSet set = new TreeSet(com);实例化用上com
com是自定义排序的规则