java-----集合比较器
来源:互联网 发布:看图软件哪个好 编辑:程序博客网 时间:2024/05/17 02:51
Comparable是接口 compareTo是Comparable中的方法。
Comparator也是接口 compare是Comparator中的方法。
对象一般有两种排序方式:一般用于集合中。
第一种方式是:实现Comparable compareTo是Comparable接口中的方法 对于排序的对象需要覆Comparable接口中的compareTo方法。
Comparable排序代码示例:
class Student implements Comparable//该接口强制让学生具备比较性。{ private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Object obj) // 复写Comparable接口中的compareTo方法。 { if(!(obj instanceof Student)) throw new RuntimeException("不是学生对象"); Student s = (Student)obj; if(this.age>s.age) return 1; if(this.age==s.age) { return this.name.compareTo(s.name); } return -1; }}class Test{ public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(new Student("lisi02",22)); ts.add(new Student("lisi02",21)); ts.add(new Student("lisi007",20)); ts.add(new Student("lisi09",19)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student)it.next(); System.out.println(stu); } }}
第二种排序方式:定义一个排序类 实现Comparator接口 重写Comparator接口中的compare方法。
代码示例:
class Test{ public static void main(String[] args) { TreeSet ts = new TreeSet(new MyCompare());//将自定义的MyCompare作为参数传递给TreeSet的构造函数。来实现排序。 ts.add(new Student("lisi02",22)); ts.add(new Student("lisi02",21)); ts.add(new Student("lisi007",20)); ts.add(new Student("lisi09",19)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student)it.next(); System.out.println(stu); } }}class MyCompare implements Comparator //定义一个排序类 { public int compare(Object o1,Object o2) { Student s1 = (Student)o1; Student s2 = (Student)o2; int num = s1.getName().compareTo(s2.getName()); if(num==0) { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); } return num; }}
一共是两种: 自然排序和比较器排序。
1 自然排序:
让(对象)元素自身具备比较性。(对象)元素自身需要实现Comparable接口,覆盖CompareTo方法,
这种方式也称为元素的自然顺序。或者叫做默认顺序。
2 比较器排序:
当元素自然不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。
定义一个比较器类,实现Comparator接口 覆盖compare方法。
- java-----集合比较器
- Java比较器对数组,集合排序
- Java集合框架比较
- Java集合框架比较
- Java常用集合比较
- Java集合框架比较
- java 集合比较
- Java常用集合比较
- java 集合比较
- java 集合优缺点比较
- Java List集合比较
- java 集合比较 排序
- Java集合比较整理
- 集合比较算法(Java)
- Java所有集合框架比较
- java集合类性能比较
- java集合框架性能比较
- java集合框架简单比较
- JavaScript函数
- js变量以及其作用域详解
- Poj 2002 && 3432
- UVa 10422 - Knights in FEN
- delphi 2007 run按钮灰化无法使用
- java-----集合比较器
- Java学习
- 第k组孪生素数 tzc
- Ubuntu12.04LTS 无线网卡驱动安装BCM4312
- Git add
- properties文件
- Java 中的反射机制
- 退出SVN的方法
- 浅谈浏览器兼容问题