`
萧_瑟
  • 浏览: 156873 次
社区版块
存档分类
最新评论

List 对象排序 Demo

    博客分类:
  • java
阅读更多

List 对象排序 Demo

 

项目目录结构:

 
简单POJO   Person.java

package com.royal.model;

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

}

 

 

一个List对象排序的工具类

SortList.java

package com.royal.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 
 * @Description: TODO(List排序工具类) 
 *
 */
public class SortList<E> {

	public void sort(List<E> list, final String method, final String sort) {
		Collections.sort(list, new Comparator() {

			@Override
			public int compare(Object a, Object b) {
				int ret = 0;
				try {
					Method m1 = ((E) a).getClass().getMethod(method, null);
					Method m2 = ((E) b).getClass().getMethod(method, null);

					if (sort != null && "desc".equals(sort)) {
						// 倒序
						ret = m2.invoke(((E) b), null).toString().compareTo(m1.invoke(((E) a), null).toString());
					} else {
						// 正序
						ret = m1.invoke(((E) a), null).toString().compareTo(m2.invoke(((E) b), null).toString());
					}
				} catch (SecurityException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NoSuchMethodException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				return ret;
			}
		});
	}

}

 

工具类的测试使用

SortListClient.java

package com.royal.test;

import java.util.ArrayList;
import java.util.List;

import com.royal.model.Person;
import com.royal.util.SortList;

public class SortListClient {
	
	public static void main(String[] args){
		Person p1 = new Person("royal",18);
		Person p2 = new Person("萧_瑟",20);
		
		List<Person> personList = new ArrayList<Person>();
		personList.add(p1);
		personList.add(p2);
		
		SortList<Person> sortList = new SortList<Person>();
		
		System.out.println("-----原来的序列-----");
		for(Person p : personList){
			System.out.println(p.getName() + "\t" + p.getAge());
		}
		
		System.out.println("-----按age正序排序-----");
		sortList.sort(personList, "getAge", null);
		for(Person p : personList){
			System.out.println(p.getName() + "\t" + p.getAge());
		}
		
		System.out.println("-----按age倒序排序-----");
		sortList.sort(personList, "getAge", "desc");
		for(Person p : personList){
			System.out.println(p.getName() + "\t" + p.getAge());
		}
	}

}

 

 

测试结果:

 

参考:http://wenku.baidu.com/view/a19a50ea81c758f5f61f674a.html

  • 大小: 5.8 KB
  • 大小: 9 KB
分享到:
评论

相关推荐

    java常用工具类的使用

    格式化的目的是把一个对象以不同的格式表示,以满足不同环境对格式的要求,比如:前面学习的Date对象实质是一个以毫秒值表示的时间,但是在不同的国家和地区表示方式不一样。那么就需要对Date进行格式化处理。接下来...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    MultilevelTreeList-快速实现Android多级树形列表,由鸿洋多级树形列表demo修改而来。支持ListView、RecyclerView。.zip

    快速实现Android多级树形列表,这个库是在鸿洋多级树形列表demo中修改而来。解决的问题:支持ID为int类型和String类型。支持多级复选框选中,使用只需一行代码。支持动态更新数据并保持原有展开/关闭状态。支持...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...

    Visual C++ 编程资源大全(英文源码 表单)

    69.zip Smart Pointers and other Pointer classes 指针类(5KB)&lt;END&gt;&lt;br&gt;70,70.zip Sortable CObArray class 对CObArray类排序(5KB)&lt;END&gt;&lt;br&gt;71,71.zip Sortable CObList class 对CObList类排序(6...

    Visual C++ 编程资源大全(控件 窗体)

    iconcombobox_src.zip 显示图标的组合框 (19KB)&lt;END&gt;&lt;br&gt;69,testlistctrl.zip 具备排序的多列视(35KB)&lt;END&gt;&lt;br&gt;70,gfx_listview.zip 超强列表视(140KB)&lt;END&gt;&lt;br&gt;71,lvcustomdraw.zip 可设置字体及背景...

    VC++2010权威开发指南+源代码

     6.5.1 自定义FormDemo程序 307  6.5.2 程序清单 314  6.6 Visual C++ 2010 ScrollView开发 319  6.6.1 加入滚动功能 319  6.6.2 坐标换算 319  6.6.3 限制图形大小 322  6.6.4 改变鼠标光标 325  6.7 ...

    VC++2010权威开发指南+源代码.part2

     6.5.1 自定义FormDemo程序 307  6.5.2 程序清单 314  6.6 Visual C++ 2010 ScrollView开发 319  6.6.1 加入滚动功能 319  6.6.2 坐标换算 319  6.6.3 限制图形大小 322  6.6.4 改变鼠标光标 325  6.7 ...

    asp.net知识库

    如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/...

    Java开发技术大全(500个源代码).

    listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的简单类 useArray1.java 用反射机制使用数组示例1 ...

    Visual C++2010开发权威指南(共三部分).part1.rar

    5.4.8 在列表控件中滚动、排列、排序和查找 205 5.4.9 在列表控件中实现工作区 205 5.4.10 处理列表控件中的通知消息 206 5.4.11 更改列表控件样式 206 5.4.12 虚拟列表控件 207 5.4.13 列表控件的消息映射 209 ...

Global site tag (gtag.js) - Google Analytics