TreeSet的第二种排序方式:比较器
2017-04-07 13:43
330 查看
/* TreeSet的第二种排序方式: 当元素自身不具备比较性时,或者具备的比较性不是所需要的 这时就需要让集合自身具备比较性。 在集合初始化时,就有了比较方式。 定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。 TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。 当两种排序都存在时,以比较器为主。 如何实现比较器: 定义一个类,实现Comparator接口,覆盖compare方法 */ import java.util.*; class SetDemo2 { public static void main(String[] args) { //指定比较器 TreeSet ts = new TreeSet(new MyCompare()); ts.add(new Student("sh3",23)); ts.add(new Student("sh4",24)); ts.add(new Student("hh1",21)); ts.add(new Student("dh2",22)); ts.add(new Student("ah5",22)); Iterator it = ts.iterator(); while(it.hasNext()) { Student sd = (Student)it.next(); System.out.println("name:"+sd.getName()+" age:"+sd.getAge()); } } } //自定义的比较器,按姓名排序 class MyCompare implements Comparator { public int compare(Object o1,Object o2) { Student s1 = (Student)o1; Student s2 = (Student)o2; return s1.getName().compareTo(s2.getName()); } } 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; } //自动调用 public int compareTo(Object obj) { if(!(obj instanceof Student)) { throw new RuntimeException("对象转换不成功!"); } Student s = (Student)obj; if(this.age>s.age) return 1; else if(this.age == s.age) { //如果年龄相同,则再比较姓名 return this.name.compareTo(s.name); } else return -1; } }
相关文章推荐
- TreeSet的第二种排序方式
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- (68)TreeSet练习:两种排序方式:自然排序(实现comparable接口)、比较器
- 黑马程序员,TreeSet的二种排序方式
- java集合TreeSet的两种排序方式
- Treeset排序几种方式
- TreeSet按照字符串的长度排序(用比较器)
- Java中的排序比较方式:自然排序和比较器排序
- TreeSet重写比较器按照字符串长度排序
- 黑马程序员———TreeSet两种排序方式
- 黑马程序员------TreeSet的自然排序与比较器
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- 黑马程序员_009_TreeSet的两种排序方式和HashSet保持元素唯一性的方式
- TreeSet存储自定义对象,并对对象排序的两种方式
- TreeSet集合两个排序方法方法的分析&&Map集合获取的两中方式
- TreeSet集合两种排序方式
- Java中的排序比较方式:自然排序和比较器排序
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- Java中的排序比较方式:自然排序和比较器排序
- TreeSet对元素进行排序实现的两种方式