关于 java 比较的2个接口 Comparator 和 Comparable 基本用法
来源:互联网 发布:淘宝卖高仿会不会坐牢 编辑:程序博客网 时间:2024/05/16 09:35
1,Comparable的用法
package com.pojo;
/**
* Comparable<Object> 排序接口
*/
public class User implements Comparable<Object> {
private String name;
private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
@Override
public int compareTo(Object o) {
if(this==o){
return 0;
}else if(o!=null && o instanceof User){
User ob=(User)o;
if(age<=ob.getAge()){
return -1;
}else{
return 1;
}
}else{ return -1; }
}
}
测试类Comparable :
public class TestComparable {
public static void main(String[] args) {
List<User> list=new ArrayList<User>();
User us1=new User();
us1.setAge(10);
us1.setName("张三");
User us2=new User();
us2.setAge(20);
us2.setName("李四");
User us3=new User();
us3.setAge(30);
us3.setName("王五");
list.add(us1);
list.add(us3);
list.add(us2);
for(User u:list){
System.out.println("排序前顺序 :"+u.getName()+u.getAge());
}
Collections.sort(list);
for(User u:list){
System.out.println("排序后顺序 :"+u.getName()+u.getAge());
} } }
2,Comparator的用法
/**
* Comparator 比较器
*/
public class Person {
private String name;
private Integer age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; } }
/**
* 外部排序规则
*/
public class ageComparator implements Comparator<Object>{
/**
* 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0;
*/
public int compare(Object o1, Object o2) {
if(o1 instanceof Person &&o2 instanceof Person){
Person ob1=(Person)o1;
Person ob2=(Person)o2;
return ob1.getAge()-ob2.getAge();
}else{
return 0;
} } }
测试类 Comarator:
public static void main(String[] args) {
List<Person> list=new ArrayList<Person>();
Person us1=new Person();
us1.setAge(10);
us1.setName("张");
Person us2=new Person();
us2.setAge(20);
us2.setName("李");
Person us3=new Person();
us3.setAge(30);
us3.setName("王");
Person us4=new Person();
us4.setAge(40);
us4.setName("离");
list.add(us1);
list.add(us3);
list.add(us2);
list.add(us4);
for(Person u:list){
System.out.println("排序前顺序 :"+u.getName()+u.getAge());
}
ageComparator comparator=new ageComparator();
Collections.sort(list, comparator);
for(Person u:list){
System.out.println("排序后顺序 :"+u.getName()+u.getAge());
} } }
总结:前者是在内部声明比较规则,或者是在外部声明比较规则;
- 关于 java 比较的2个接口 Comparator 和 Comparable 基本用法
- Java中comparable和comparator接口的比较
- 用来比较的java接口,Comparator 和 Comparable
- Java编程:Comparable和Comparator用法比较
- Java的比较接口 Comparable与Comparator
- java中的Comparator和Comparable比较器的用法
- Comparable和Comparator的比较用法
- java的comparable接口和comparator接口
- Comparable和Comparator接口比较
- Java中Comparable和Comparator的比较
- Java中的Comparable和Comparator的比较
- java的Comparable 和Comparator 接口
- Java的Comparator和Comparable接口
- java 接口Comparable和Comparator的使用
- Java comparable和Comparator接口的区别
- 深入java--comparable接口和comparator接口比较
- java比较器comparable接口和comparator接口
- Java Comparable排序接口和Comparator比较器接口
- Kali Linux忘记密码与登录鉴定故障
- 第十二周阅读程序3
- 学习网站收藏
- Codeforces Round #353 Money Transfers
- oracle 分组后取每组第一条数据
- 关于 java 比较的2个接口 Comparator 和 Comparable 基本用法
- Android 获得view的宽和高
- nginx-rtmp-module 指令详解
- JavaScript正则表达式大全(过滤Emoji的最佳实践)
- 简单算法之二分法
- iOS的粒子系统
- 无阻塞加载javascript脚本
- 游戏中的网络同步机制——Lockstep
- 80-Top K Frequent Elements