您的位置:首页 > 编程语言 > Java开发

JAVA并发编程随笔【三】Comparator接口(类的比较器)

2017-09-01 10:32 127 查看
一、Comparable接口是在java.lang包下,实现此接口的类可以实现自然排序;而Comparator接口是在java.util包下,此接口是对未实现自然排序接口的类进行排序的;

二、Collections类和Arrays类中都实现了sort排序方法

Arrays.sort(paramArrayOfObject); //对实现自然排序的类进行排序
Arrays.sort(paramArrayOfT, paramComparator);//对未实现自然排序的类进行排序

Collections.sort(paramList);//对实现自然排序的类进行排序
Collections.sort(paramList, paramComparator);//对未实现自然排序的类进行排序


三、举例说明:

实体类:

package framework.yaomy.thread.model;
/**
* @Description:小狗实体类
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年9月1日 上午10:02:54
*/
public class Dog {

private Integer age;
private String dogName;

public Dog(Integer age, String dogName) {
this.age = age;
this.dogName = dogName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getDogName() {
return dogName;
}
public void setDogName(String dogName) {
this.dogName = dogName;
}

}


具体运行实例:

package framework.yaomy.thread.example;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import framework.yaomy.thread.model.Dog;

/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年9月1日 上午10:02:41
*/
public class ComparatorDemo {

public static void main(String[] args) {
List<Dog> list = new ArrayList<Dog>();
list.add(new Dog(23, "黑子"));
list.add(new Dog(13, "麻花"));
list.add(new Dog(13, "虎子"));
list.add(new Dog(35, "大白"));
//按照狗狗年龄升序排列
Collections.sort(list, new Comparator<Dog>() {

@Override
public int compare(Dog dog1, Dog dog2) {
return dog1.getAge().compareTo(dog2.getAge());
}
});
for(Dog dog:list) {
System.out.println("狗狗年龄:"+dog.getAge()+"==========狗狗名字:"+dog.getDogName());
}
System.out.println("========================分割线======================================");
//按照狗狗年龄降序序排列
Collections.sort(list, new Comparator<Dog>() {

@Override
public int compare(Dog dog1, Dog dog2) {
return dog2.getAge().compareTo(dog1.getAge());
}
});
for(Dog dog:list) {
System.out.p
4000
rintln("狗狗年龄:"+dog.getAge()+"==========狗狗名字:"+dog.getDogName());
}
}
}


运行结果:

狗狗年龄:13==========狗狗名字:麻花
狗狗年龄:13==========狗狗名字:虎子
狗狗年龄:23==========狗狗名字:黑子
狗狗年龄:35==========狗狗名字:大白
========================分割线======================================
狗狗年龄:35==========狗狗名字:大白
狗狗年龄:23==========狗狗名字:黑子
狗狗年龄:13==========狗狗名字:麻花
狗狗年龄:13==========狗狗名字:虎子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: