java小结_015_Treeset集合的compareTo和comparator
来源:互联网 发布:javascript 在线测试 编辑:程序博客网 时间:2024/05/16 02:48
TreeSet的排序之自然排序——compareTo
TreeSet会调用元素的compareTo(Objecto)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int compareTo(Objecto)方法;
该方法用于比较对象,若:obj1,compareTo(obj2),返回0,表示两个对象相等,若返回一个正整数,表示obj1大于obj2,若返回一个负整数,表示obj1小于obj2;
对于TreeSet集合而言,判断两个对象相等的标准是:
compareTo()方法比较返回 0;
<span style="font-size:18px;">//TreeSet可以自动进行排序!最简单的情况 import java.util.*; public class Demo { publicstatic void main(String[] args) { Set<Integer>s = new TreeSet<Integer>(); s.add(1); s.add(192); s.add(123); System.out.println(s);//[1, 123, 192] }} 稍复杂点的 //TreeSet的自然排序,升序 import java.util.Set;import java.util.TreeSet; class Student implements Comparable{//必须实现接口 private Integer age; public Student(Integer age) { super(); this.age = age; } @Override public int compareTo(Object o) {//比较的规则,运用泛型可以消除强转! if(o instanceof Student){ Student s = (Student)o; return this.age.compareTo(s.age); } return 0; } @Override public String toString() { return age+"" ; }} public class Demo14 { public static void main(String[] args) { Set<Student> s = new TreeSet(); s.add(new Student(140)); s.add(new Student(15)); s.add(new Student(11)); s.add(new Student(63)); s.add(new Student(96)); System.out.println(s);//[11, 15, 63, 96, 140] }}</span>
TreeSet的排序之定制排序——Comparator
TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了:
必须实现Comparator接口,并覆写其public intcompare(Object o1, Object o2)方法,该int compare(Object o1,Object o2)方法,用于比较两个对象的大小,比较结果和compareTo方法一致;
要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象,该对象里负责集合元素的排序逻辑;
TreeSet(Comparator comparator)
<span style="font-size:18px;">//定制排序的话,必须在创建TreeSet集合对象的时候提供一个Comparator方法 import java.util.*; class Student1{ private Integer age; public Student1(Integer age) { super(); this.age = age; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return age + ""; }} class MyComparator implements Comparator{ @Override public int compare(Object o1, Object o2) { if(o1 instanceof Student1 & o2 instanceof Student1){ Student1 s1 = (Student1)o1; Student1 s2 = (Student1)o2; if(s1.getAge() >s2.getAge()){ return -1; }else if(s1.getAge() < s2.getAge()){ return 1; } } return 0; }} public class Demo { public static void main(String[] args) { Set<Student1> s = new TreeSet(new MyComparator()); /** * 要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象, * 该对象里负责集合元素的排序逻辑; */ s.add(new Student1(140)); s.add(new Student1(15)); s.add(new Student1(11)); s.add(new Student1(63)); s.add(new Student1(96)); System.out.println(s); }} </span>
0 0
- java小结_015_Treeset集合的compareTo和comparator
- Java集合排序之compareTo&compare 接口 compareable & comparator
- java compareto 小结
- Java集合排序方法comparable和comparator的总结
- Java集合之七Comparable和Comparator的区别
- Java中Comparable和Comparator区别小结
- Java中Comparable和Comparator区别小结
- 【java】Comparable和Comparator区别小结
- Java中Comparable和Comparator区别小结
- Java中Comparable和Comparator区别小结
- Java中Comparable和Comparator区别小结
- comparable,Comparator,compare,compareTo的小总结
- java集合中Comparable和Comparator辨析
- java集合中Comparable和Comparator辨析
- Java集合中Comparable和Comparator辨析
- 关于comparator接口和comparable接口以及它们各自的方法compare()和compareTo()
- 集合框架-Comparator和Comparable的区别
- [疯狂Java]集合:SortedMap、TreeMap、equals/compareTo的标准写法
- 【线段树】线段树入门
- 百度2015校园招聘笔试题——研发工程师(西安站)
- java基础知识
- android实现tab选项的方式
- c++中const用法整理
- java小结_015_Treeset集合的compareTo和comparator
- 使用docker的优点
- 单处理机也称CPU,那么多处理机又叫做什么呢?
- do{...}while(0)的意义和用法
- Web开发经验记录点,
- 透明计算的特点
- uva10624Super Number
- Redis学习手册(Sorted-Sets数据类型)
- 通过cpuid指令获取CPU Verdor ID