`
hvang1988
  • 浏览: 51225 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

java实现集合对象排序(单个字段)

阅读更多
好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:http://bitar.cn
package com.collection;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SingleSort<E> {
	/**
	 * 
	 * @param list 要排序的集合
	 * @param method 要排序的实体的属性所对应的get方法
	 * @param sort desc 为正序  
	 */
	public void Sort(List<E> list, final String method, final String sort) {
		// 用内部类实现排序
		Collections.sort(list, new Comparator<E>() {

			public int compare(E a, E b) {
				int ret = 0;
				try {
					// 获取m1的方法名
					Method m1 = ((E)a).getClass().getMethod(method, new Class[]{});
					// 获取m2的方法名
					Method m2 = ((E)b).getClass().getMethod(method, new Class[]{});
					
					if (sort != null && "desc".equals(sort)) {

						ret = m2.invoke(((E)b), new Object[]{}).toString().compareTo(m1.invoke(((E)a),new Object[]{}).toString());

					} else {
						// 正序排序
						ret = m1.invoke(((E)a), new Object[]{}).toString().compareTo(m2.invoke(((E)b), new Object[]{}).toString());
					}
				} catch (Exception ne) {
					ne.printStackTrace();
				}
				return ret;
			}
		});
	}
	public static void main(String[] args) {
    	List<JavaBeanS> list = new ArrayList<JavaBeanS>();
    	JavaBeanS bean = new JavaBeanS(2,"张三","b");
    	list.add(bean);
    	bean = new JavaBeanS(1,"李四","d");
    	list.add(bean);
    	bean = new JavaBeanS(3,"王二","c");
    	list.add(bean);
    	bean = new JavaBeanS(4,"钱七","a");
    	list.add(bean);
    	
    	SingleSort<JavaBeanS> sorter = new SingleSort<JavaBeanS>();
    	sorter.Sort(list, "getAddress", "desc");
    	
        for (JavaBeanS obj : list) {
			System.out.println(obj.getId()+":"+obj.getName()+":"+obj.getAddress());
		}
	}
}
class JavaBeanS{
	private String name;
	private String address;
	private int id;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public JavaBeanS(int id,String name, String address) {
		super();
		this.name = name;
		this.address = address;
		this.id = id;
	}
}
分享到:
评论

相关推荐

    Java中实现参数名ASCII码从小到大排序(字典序).doc

    `TreeMap`是Java集合框架中的一个实现,它继承自`AbstractMap`并实现了`SortedMap`接口。`TreeMap`内部使用红黑树数据结构,可以保证插入的元素按照指定的比较器(默认是自然顺序,即ASCII码顺序)自动排序。在本例...

    java8从list集合中取出某一属性的值的集合案例

    Java8从List集合中取出某一属性的值的集合案例 Java8从List集合中取出某一属性的值的集合案例是一个非常有价值的知识点,主要介绍了如何使用Java8的流式编程从List集合中取出某一属性的值的集合。下面将详细介绍这...

    java处理日期合并

    本文将通过一个具体的Java代码示例来介绍如何实现日期的合并功能。 #### 二、关键类与方法解析 本案例中涉及的主要类包括`TimeoffDateDTO`和`TimeoffDateComparator`。 ##### 2.1 `TimeoffDateDTO` 类 该类定义...

    java学习及练习,登录界面

    最后,`CompareField.java`可能是实现对象字段比较的类,例如在排序或筛选过程中比较两个联系人对象的特定字段。这可能涉及到Comparator接口的实现,允许我们自定义对象的比较逻辑。 在后端开发中,这些基础概念和...

    sql 按拼音首字母排序

    为了实现这一功能,代码内部定义了另一个函数`F_NLSSORT`,用于获取单个汉字的拼音编码。 #### `F_NLSSORT`函数详解 `F_NLSSORT`函数的作用是返回指定字符根据特定排序规则的编码值。在这个场景下,使用的排序规则...

    经典Spark算子的JAVA实现.zip

    9. **sort()**或**sortBy()**: 对数据集进行排序,可以按照指定的字段和排序顺序进行。 10. **union()**: 将两个数据集合并为一个新的数据集,不考虑重复元素。 11. **intersection()**: 返回两个数据集的交集,即...

    [原]Hibernate集合映射

    9. **集合排序与分页** Hibernate允许我们在集合映射中定义排序规则,使用`@OrderBy`注解指定排序字段和顺序。同时,通过Query对象的`setFirstResult`和`setMaxResults`方法可以实现分页查询。 10. **集合缓存** ...

    JAVA词汇表下载.docJAVA词汇表下载.doc

    Java 语言是面向对象编程的一种强大工具,拥有丰富的特性与概念。在 Java 词汇表中,我们可以找到许多关键概念,这些概念构成了 Java 编程的基础。以下是一些重要的 Java 知识点: 1. 抽象类(Abstract Class):...

    java基础易忘

    - **对象状态 (State)**: 指的是对象当前的属性值集合。 - **封装 (Encapsulation)**: 将对象的状态和行为封装起来,只通过公开的方法来访问对象内部的数据,提高安全性。 #### 9. 方法与字段 - **实例字段 ...

    Java判断List中相同值元素的个数实例

    在Java编程中,有时我们需要统计一个List集合中相同值出现的次数。这在处理数据集、分析重复项或进行数据清洗时非常常见。本篇文章将详细介绍如何通过Java实现这一功能,特别是利用Map数据结构来高效地计算List中...

    集合与泛型

    - **核心集合接口**:Java集合框架主要包括以下几个核心接口: - `Collection`:所有集合类的根接口。 - `Set`:不允许重复元素的集合。 - `List`:有序的、可重复元素的集合。 - `Map`:键值对映射的集合。 - ...

    redis java操作demo

    - 获取单个字段:`hget(hashKey, field)` - 更新字段:`hset(hashKey, field, newValue)` - 删除字段:`hdel(hashKey, field)` - 删除整个哈希:`hdel(hashKey)` 4. **列表(List)操作** 列表支持在两端插入...

    Java面试题整理精华

    用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 除了实现`Serializable`接口外,还可以使用`Externalizable`接口,它提供了更精细的控制,允许自定义序列化和反序列化的过程。 #### 14. 如在COLLECTION框架...

    JAVA2核心技术第7版卷1part15-21

    4. **集合框架**:Java 集合框架是存储和操作对象的主要工具,包括 List、Set 和 Map 接口,以及它们的实现类,如 ArrayList、LinkedList、HashSet、HashMap 等。这部分会介绍集合的操作、遍历、排序和并发访问。 5...

    Java笔记word.docx

    在执行批量查询时,可以通过构建包含单个参数和列表参数的`Map`对象来实现。 **示例**: ```java Map, Object&gt; params = new HashMap(); params.put("id", 1L); params.put("ids", Arrays.asList(2L, 3L, 4L)); ...

    最近5年133个Java面试问题列表

    - **基础知识:** Java集合框架提供了存储和操作对象的集合类,如List、Set和Map等。这些集合类根据数据结构的不同特性提供了不同的行为。例如,`ArrayList`提供快速的随机访问,而`LinkedList`则提供高效的插入和...

    java课程设计_电话薄

    该类实现了`Comparable`接口和`Serializable`接口,以便于对联系人进行排序和序列化存储。 - **构造方法**: - 默认构造方法创建一个空的`Friend`对象。 - 带参数的构造方法允许初始化所有或部分字段。 - 复制...

Global site tag (gtag.js) - Google Analytics