按List中Person类的age属性进行排序。
Person类:
package com.flg;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午12:35
* To change this template use File | Settings | File Templates.
*/
public class Person {
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;
}
}
MyPersonListSortTest1:
package com.flg;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午12:34
* To change this template use File | Settings | File Templates.
*/
public class MyPersonListSortTest1 implements Comparator {
private boolean isAsc; //是否升序排列
public boolean isAsc() {
return isAsc;
}
//带升降顺序设置的构造参数
public MyPersonListSortTest1(boolean asc) {
isAsc = asc;
}
//无参构造函数
public MyPersonListSortTest1(){}
/**
* 获得要测试的list
* @return list
*/
public List getList(){
List list = new ArrayList<Person>() ;
Person p1 = new Person();
p1.setName("张三");
p1.setAge(10);
Person p2 = new Person();
p2.setName("李四");
p2.setAge(20);
Person p3 = new Person();
p3.setName("王五");
p3.setAge(30);
//打乱存放顺序
list.add(p2);
list.add(p1);
list.add(p3);
return list;
}
/**
* 控制台输出遍历list对像顺序
* @param list
*/
public void printList(List list){
Person p;
for(int i=0;i<list.size();i++){
p = (Person)list.get(i);
System.out.println(p.getName()+"---"+p.getAge());
}
}
/**
* 对list进行排序
* @param list
*/
public void listSort(List list,boolean isAsc){
Collections.sort(list, (Comparator) new MyPersonListSortTest1(isAsc));
}
/**
* 当前类实现了Comparator接口的compare方法
* 站在第三方角度去比较其它对象
* 是一个Comparator的角色
* @param p1
* @param p2
* @return
*/
@Override
public int compare(Object p1, Object p2) {
if(isAsc()){
return ((Person)p1).getAge()-((Person)p2).getAge();
}else {
return ((Person)p2).getAge()-((Person)p1).getAge();
}
}
public static void main(String [] args){
MyPersonListSortTest1 m = new MyPersonListSortTest1();
List list = m.getList();
System.out.println("==========排序前=========");
m.printList(list);
m.listSort(list,false); //排序isAsc:true 升序,false:降序
System.out.println("==========排序后=========");
m.printList(list);
}
}
分享到:
相关推荐
程序实现时间排序Comparator
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
Java-中的-Comparator-和-Comparable.md
php-sebastian-comparator3-3.0.2-1.el7.remi.noarch.rpm
List对象集合的排序:比较器Comparator
python库。 资源全名:number_comparator-0.0.3b1-py3-none-any.whl
comparator接口与Comparable接口的区别
Java中Comparator接口的用法 对集合排序的例子 Comparator
java排序Comparator和Comparable
资源分类:Python库 所属语言:Python 资源全名:comparator-0.2.1-py2.7.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
主要介绍了JAVA使用Comparator接口实现自定义排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
493.491.JAVA基础教程_常用类-使用Comparator实现定制排序(493).rar
计算机后端-Java-Java核心基础-第22章 常用类 23. 使用Comparator实现定制排序.avi
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个...
A 1-to-1-kHz, 4.2-to-544-nW, Multi-Level Comparator Based Level-Crossing ADC for IoT Applications
NULL 博文链接:https://singhoo.iteye.com/blog/1704428
主要介绍了Java中实现Comparator接口和用法实例(简明易懂),本文给出实现Comparator接口的实例和使用这个接口的代码实例,需要的朋友可以参考下
This software shows the necessary configuration to use Comparator0 as a reset source.