按List中Person类的age属性进行排序。
Person类:
package com.flg;
/**
* Created with IntelliJ IDEA.
* User: fuliguo
* Date: 12-7-29
* Time: 下午13:09
* To change this template use File | Settings | File Templates.
*/
public class Person implements Comparable{
private String name;
private int age;
private boolean isAsc;//是否升序排列.true:升序, false:降序
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;
}
public boolean isAsc() {
return isAsc;
}
public void setAsc(boolean asc) {
isAsc = asc;
}
/**
* 实现Comparable接口中的compareTo方法
* 这是对象自身与别一个对象之间的比较
* @param o
* @return
*/
@Override
public int compareTo(Object o) {
if(isAsc()){
return this.age-((Person)o).getAge();
}else {
return ((Person)o).getAge()-this.age;
}
}
}
MyPersonListSortTest2类:
package com.flg;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
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: 下午13:10
* To change this template use File | Settings | File Templates.
*/
public class MyPersonListSortTest2 {
/**
* 获得要测试的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<Person> list,boolean isAsc){
for(Person p:list){
p.setAsc(isAsc);//设置升降序排列
}
Collections.sort(list);
}
public static void main(String [] args) {
MyPersonListSortTest2 m = new MyPersonListSortTest2();
List list = m.getList();
System.out.println("==========排序前=========");
m.printList(list);
m.listSort(list,true); //排序isAsc:true 升序,false:降序
System.out.println("==========排序后=========");
m.printList(list);
}
}
分享到:
相关推荐
java通过Comparable接口实现字符串比较大小排序的简单实例
Java-中的-Comparator-和-Comparable.md
主要介绍了java 实现Comparable接口排序,升序、降序、倒叙,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行...
通过简单的例子初步了解Comparable和Comparator的使用,注释很详细
下面小编就为大家带来一篇java中实现Comparable接口实现自定义排序的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
comparator接口与Comparable接口的区别
可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组
Comparable的用法2---马克-to-win java视频的详细描述
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
Comparable的用法1---马克-to-win java视频的详细描述
java排序Comparator和Comparable
java实现别踩白块儿源码SortedList Sorted List的实现,它扩展了ArrayList。 它是使用Comparator对象构造的,该对象可以将两个对象进行...要将对象添加到SortedList中,我们可以使用add方法: int i = 5; sortedlist
计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi
JAVA-V2-Interfaces-Comparable-y-Comparator
资源分类:Python库 所属语言:Python 资源全名:Comparable-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar
1-2 学习算法和数据结构到底有没有用? [无代码] 1-3 更多课程学习注意事项 [无代码] 1-4 课程编程环境的搭建 [无代码] 1-5 【文字】JDK 的国内下载链接,和更多学习方法 [无代码] 第二章 线性查找法 (02-Linear-...
Comparable和Comparator接口都可用作普通意义上对象间的比大小,但两个接口在实例化方面的用法不尽相同,接下来我们就来详细对比Java中的Comparable排序接口和Comparator比较器接口
本书是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找...