`

list类型自动排序

    博客分类:
  • Java
阅读更多

我们在List里存入一些对象,比如person对象,若想要让这些对象按他们的age属性大小排序,不用我们自己实现,java已经帮我们实现了,我们只要实现Comparator接口,重写其中的compare方法就好~

下面是实现的代码:


person.java


public class Person {
	String name;
	int age;
	
	public Person(String name, int age){
		this.name = name;
		this.age = 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;
	}
	
}

 

MyComparetor.java (实现 java 的Comparetor接口)


import java.util.Comparator;

public class MyComparetor implements Comparator {
//   按年龄排序
//	public int compare(Object o1, Object o2){
//	     Person p1=(Person)o1;
//	     Person p2=(Person)o2;
//	     return (p2.getAge()-p1.getAge());
//	    }


//  按姓名排序	
	public int compare(Object o1, Object o2){
	     Person p1=(Person)o1;
	     Person p2=(Person)o2;
	     return (p1.getName().compareTo(p2.getName()));
	    }
	
}

 

上面的compare方法会返回3种值, -1,0,1. 当第一个大于第二个的时候返回1,相等返回0,小于返回-1

按姓名排序中,用p1compareto p2是升序,反之是降序


测试类:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		List list=new ArrayList();
		list.add(new Person("weichao",22));
		list.add(new Person("lb",20));
		list.add(new Person("sf",18));
		list.add(new Person("wj",30));
		Collections.sort(list,new MyComparetor());
		Person person = null;
		for(int i = 0; i < list.size(); i++){
			person = (Person) list.get(i);
			System.out.println("name:" + person.getName() + ",age:" + person.getAge());
		}
	}

 

by NN    2009-9-29

分享到:
评论

相关推荐

    unity3d-reorderable-list:Unity的列表控件,允许编辑器开发人员将可重新排序的列表控件添加到其GUI

    重新排序时,如果在滚动视图内,则自动滚动。 使用标记轻松自定义。 IList和SerializedProperty适配器。 订阅以添加/删除项目事件。 支持混合的项目高度。 逐项禁用拖动和/或移除。 插入插入(用于UnityEditor.Drag...

    多功能.NET代码自动生成器(含存储过程)

    注:json数据源中totalProperty属性为数据源总记录条数,root属性下是具体数据表记录信息,数据表记录信息中各key为小写字段名称,值均为字符串类型。 示例: { 'totalProperty':10, 'root':[ {'id':'001','name'...

    集合anylist要进行筛选.pdf

    当我们修改了ArrayList的容量时,则可以自动进行内存重新分配和元素复制,比如往1号索引位插入n个元素,插入后,元素的索引依次向后n个位置排列,它是动态版本的数组类型。 2.ArrayList提供添加、插入或移除某一...

    多功能.NET代码自动生成器2.0版(2010年最新修改)

    注:json数据源中totalProperty属性为数据源总记录条数,root属性下是具体数据表记录信息,数据表记录信息中各key为小写字段名称,值均为字符串类型。 示例: { 'totalProperty':10, 'root':[ {'id':'001','name':'...

    Java基础知识点.html

    哈希值 LinkedHashSet TreeSet 自然排序Comparable 比较器排序Comparator Set集合 并发修改异常 LinkedList集合 ArrayList集合 List集合 Collection集合概述 冒泡排序 Object 异常 Math 包装类 Calendar类 ...

    基于python的TXT解析器 parser 包含各个版本的代码 见注释

    就compile()和findall(),从该元素中提取数字组合(在compile()的参数中添加()就能够使提取的内容成为一组数据),然后通过dict自带函数setdefault()添加索引,并可以设置索引值为list类型(dict类型的索引的值不可...

    Linq基础学习资料,通俗易懂

    6.3.19 ToList 将集合转换为List集合,浅复本 25 6.3.20 ToDictionary 将集合转换为, V&gt;集合,浅复本 25 7 Lambda表达式 25 7.1 例1(比效) 25 7.2 例2(多参) 27 7.3 例3(list.Where) 27 7.4 Lambda表达式中...

    通用工具类

    8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中的role的name属性进行排序,method="role.name") 9.JVM参数获取工具 10.Java对象比较、...

    KTV点歌系统

    根据用户选择房间类型(大包间 小包间 )系统分配房间号、密码、验证码登录房间,如果房间的使用状态是未使用,才能登录房间, 系统自动分配未使用的方法给用户,提供给用户房间信息(房间号,房间钥匙) ...

    突破程序员基本功的16课.part2

    5.2.1 表达式类型的自动提升 5.2.2 复合赋值运算符的陷阱 5.3 输入法导致的陷阱 5.4 注释的字符必须合法 5.5 转义字符的陷阱 5.5.1 慎用字符的Unicode转义形式 5.5.2 中止行注释的转义字符 5.6 泛型可能引起...

    Linux下Redis的安装和部署

    和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    16.2.5 已排序集合:SortedDictionary和SortedList 453 16.2.6 栈集合:Stack 454 16.2.7 队列集合:Queue 455 16.2.8 链表:LinkedList 456 16.3 提供索引器 456 16.4 返回null或者空集合 ...

    Java 基础面试题

    16. 集合排序,内排序,外排序 17. 动态代理和静态代理 18. 封装、继承、多态 19. static加载顺序 20. 代理和反射(3分钟),反射泛型还有用吗 21. final关键字 22. 线程wait和sleep相同点和不同点 23. 为什么...

    PB扩展组件

    自动排序,统一风格等等,自动处理多选问题。 TFunctions PB扩展函数库,字符串操作,执行动态SQL,加密字符串等等。 TForm对象 基本的窗口对象,以上的可视化对象都必须放置在TForm继承的窗口中才会有作用。 ...

    redis windows(含32/64位 )v2.4.5官方版.zip

    和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...

    robotframework-接口自动化.pdf

    5)接⼝排序参数 接⼝请求URL实例 :请求说明,以及对应的URL 接⼝返回结果⽰例:根据接⼝实际返回的数据为例进⾏展⽰,这⾥返回的格式都是以json格式进⾏返回的 2、设计接⼝⽤例 常规接⼝在设计⽤例时,⾄少需包括...

    JazzFramework:免费的C#和JavaScript工具&lt;3

    ErkmenEsen的JazzFramework 免费的C#,JavaScript和jQuery工具&lt;3 您可以终生使用在此存储库中看到的所有内容。...自动排序和自动分页 爵士音乐 可用于敏感区域,例如卡密码。 自动洗牌 文档即将发布..

    CMS内容管理v2.8源码2012811

    CMS内容管理v2.8源码 功能介绍: CMS 是一套采用C#开发的,基于.net2.0,可以...反馈类型加排序字段。 17、BaseWidgetList.cs中的PageSize属性移至WidgetList.cs;添加类别时,仅同一层级同一父类别下的名称不可重复。

    《10天掌握MongoDB》2012完整版.pdf[带书签]

    数据库命令-LISTCOMMANDS 数据库命令-LISTDATABASES 数据库命令-PING 数据库命令-RENAMECOLLECTION 数据库命令-REPAREDATABASE 数据库命令-SERVERSTATUS 定容集合 定容集合-自然排序 定容集合-尾部游标 GRIDFS GRDFS...

Global site tag (gtag.js) - Google Analytics