java SE基础(Comparable接口和Comparator接口)
2016-03-24 21:58
645 查看
1。Comparable(可比较接口)
(1)此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法(2)实现此接口的对象可以通过Collections.sort和Arrays.sort进行自动排序,也可以用作有序映射中的键或有序集合中的元素,无需指定比较器
(3)接口声明*/
public interface Comparable<T>{
int compareTo(T o); //比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
}
(4)例如:
public class Person implements Comparable<Person>{ private int num; private int age; public Person(int num , int age) { this.num = num; this.age = age; } @Override public int compareTo(Person o) { return this.num - o.num; } @Override public String toString() { return this.num+"--"+this.age; } } import java.util.Iterator; import java.util.TreeSet; import java.util.Random; public class MyTreeSet { public static void main(String[] args) { TreeSet<Person> treeset = new TreeSet<Person>(); Random rnum = new Random(); Random rage = new Random(); int count = 0 , age , num; while(count < 10){ num = rnum.nextInt(30); age = rage.nextInt(30); Person person = new Person(num , age); if(!treeset.contains( person )){ treeset.add(person); count++; } } Iterator<Person> iterator = treeset.iterator(); while(iterator.hasNext()) System.out.print(iterator.next().toString()+"\t\t"); System.out.println(); } }
2。Comparator(比较器接口)
(1)可以将Comparator传递给sort方法,从而允许在排序顺序上实现精确控制。还可为那些没有自然顺序的对象 collection 提供排序(2)接口声明*/
public interface Comparator<T>{
int compare(T o1, T o2); //比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数
}
(3)例如:
import java.util.Comparator; public class Person implements Comparator<Person>{ private int num; private int age; public Person(int num , int age) { this.num = num; this.age = age; } public Person() { super(); } public int getAge() { return age; } public int getNum() { return num; } @Override public String toString() { return this.num+"--"+this.age; } @Override public int compare(Person arg0, Person arg1) { return arg0.getAge() - arg1.getAge(); } } import java.util.Iterator; import java.util.Random; import java.util.TreeSet; public class MyTreeSet{ public static void main(String[] args) { TreeSet<Person> treeset = new TreeSet<Person>(new Person()); Random rnum = new Random(); Random rage = new Random(); int count = 0 , age , num; while(count < 10){ num = rnum.nextInt(30); age = rage.nextInt(30); Person person = new Person(num , age); if(!treeset.contains( person )){ treeset.add(person); count++; } } Iterator<Person> iterator = treeset.iterator(); while(iterator.hasNext()) System.out.print(iterator.next().toString()+"\t\t"); System.out.println(); } }例二
public class Person{ private int num; private int age; public Person(int num , int age) { this.num = num; this.age = age; } public int getAge() { return age; } public int getNum() { return num; } @Override public String toString() { return this.num+"--"+this.age; } } import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; import java.util.Random; public class MyTreeSet implements Comparator<Person>{ public static void main(String[] args) { TreeSet<Person> treeset = new TreeSet<Person>(new MyTreeSet()); Random rnum = new Random(); Random rage = new Random(); int count = 0 , age , num; while(count < 10){ num = rnum.nextInt(30); age = rage.nextInt(30); Person person = new Person(num , age); if(!treeset.contains( person )){ treeset.add(person); count++; } } Iterator<Person> iterator = treeset.iterator(); while(iterator.hasNext()) System.out.print(iterator.next().toString()+"\t\t"); System.out.println(); } @Override public int compare(Person arg0, Person arg1) { return arg0.getAge() - arg1.getAge(); } }
相关文章推荐
- 初识Spring
- Spring中的注入注解Resource/Autowired以及配置文件中default-autowire参数详解
- JAVA读入一行空格隔开的数据
- Java线程池中线程的状态简介
- java语法小结2
- java基础语法总结1
- 测试Spring Data JPA的repository
- java解析xml的几种方式
- java spring框架学习笔记(一)
- 151. Reverse Words in a String | Java最短代码实现
- java二分查找法代码实现
- java常见的软件包
- 基于Maven构建整合SpringMVC+Mybtis+Druid
- java回顾篇——面向对象的封装,继承,多态
- Mongo-java开发中的小问题
- poj-1503-java大数相加
- spring四种依赖注入方式
- Java实现给图片添加水印
- JAVA学习笔记05
- 基于SpringBoot的通用设备操作接口服务