java中List排序 例子
package test;
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.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> m1 = new HashMap<String,Object>();
m1.put("NO", 2);
m1.put("NO1", "2");
m1.put("NO2", "f");
list.add(m1);
Map<String,Object> m2 = new HashMap<String,Object>();
m2.put("NO", 1);
m2.put("NO1", "10");
m2.put("NO2", "z");
list.add(m2);
Map<String,Object> m3 = new HashMap<String,Object>();
m3.put("NO", 1);
m3.put("NO1", "10");
m3.put("NO2", "a");
list.add(m3);
Test test = new Test();
test.getSortedList(list,new String[]{"NO","NO1","NO2"});
System.out.println(list);
}
private void getSortedList(List<Map<String, Object>> list, String[] pros) {
if (pros.length <= 0)
return;
for (int i = pros.length - 1; i >= 0; i--) {
final String pro = pros[i];
try {
Collections.sort(list, new Comparator<Map<String, Object>>() {
String name = "get";
Method method = Map.class.getMethod(name, new Class[] {Object.class});
public int compare(Map<String, Object> a, Map<String, Object> b) {
if (a == null || b == null) {
return 0;
} else {
int flag = 0;
try {
Object as = method.invoke(a, new Object[] {pro});
Object bs = method.invoke(b, new Object[] {pro});
if (as == null && bs == null)
return 0;
else if (as == null)
return -1;
else if (bs == null)
return 1;
else {
if (as instanceof Integer) {
Integer va = (Integer) as;
Integer vb = (Integer) bs;
flag = va.compareTo(vb);
}else if (as instanceof String) {
String va = (String) as;
String vb = (String) bs;
flag = va.compareTo(vb);
}
}
} catch (IllegalArgumentException e) {
System.out.println("e1");
} catch (IllegalAccessException e) {
System.out.println("e2");
} catch (InvocationTargetException e) {
System.out.println("e3");
}
return flag;
}
}
});
} catch (NoSuchMethodException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
执行结果:
[{NO=1, NO2=a, NO1=10}, {NO=1, NO2=z, NO1=10}, {NO=2, NO2=f, NO1=2}]
分享到:
相关推荐
java中数组的自定义排序,种类繁多,简单实现,可自由操控。
在本节中,我们将通过一个实体类的示例来演示如何实现自定义排序。 自定义排序的必要性 在 Java 程序中,排序是非常常见的操作。Java 提供了多种排序算法和方法,但是当我们需要对自定义的对象进行排序时,Java 的...
JAVA中Comparator接口是Java Collections Framework中的一个重要接口,它提供了自定义排序的能力。通过实现Comparator接口,我们可以根据自己的需求来定义对象的排序规则。 Comparator接口中最重要的方法是compare...
如果`quiz`是一个文件,那么它本身不能直接参与排序,但如果我们有一个包含多个文件的目录`quiz`,可以按照上述方法对`quiz`目录下的文件进行排序。 7. **注意点**: - 文件路径应正确处理,避免路径分隔符问题。 ...
总结一下,Java实现拖拽列表项的排序功能主要包括以下步骤: 1. 启用UI组件的拖放功能,如设置`AllowDrop`、`CanReorderItems`和`IsSwipeEnabled`属性。 2. 监听并处理拖放事件,更新数据模型以反映拖放操作。 3. ...
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在...
总的来说,这个"Java排序算法包"为开发者提供了一个强大的工具,不仅包含了多种经典的排序算法,还允许用户通过自定义比较器来满足个性化排序需求,从而在不同的场景下都能实现高效且准确的排序。
1. **通过SQL查询定制排序**:这种方法的核心思想是在SQL查询阶段就对数据进行预处理,从而实现自定义排序。 2. **利用iReport中的Crosstab控件属性**:这种方式是直接在iReport的设计界面中调整Crosstab控件的相关...
本文将探讨在Java中实现的八大排序算法,这些算法在实际应用中各有优势,适用于不同的场景。通过深入理解并实践这些算法,可以提升你的编程技能和算法分析能力。 1. 冒泡排序(Bubble Sort) 冒泡排序是最简单的...
Java中实现选择排序只需一个for循环来遍历未排序部分,再用一个内层循环找到最小元素并进行交换。 3. 插入排序(Insertion Sort) 插入排序的工作原理类似于我们平时玩扑克牌时的排序方式,将待排序元素逐个插入已...
Java实现中,通常使用一个for循环来遍历未排序部分,然后用一个while循环找到已排序部分的合适位置进行插入。 4. **快速排序(Quick Sort)**:快速排序是一种高效的排序算法,采用分治策略。选取一个基准值,将...
它可以接受一个可选的比较器参数来进行自定义排序。 #### 三、具体实现 ##### 1. 对象列表按照中文姓氏排序 假设我们有一个 `SysTeacherInfo` 类,其中包含教师的名字 `teachername`,我们需要按照教师的中文姓氏...
在Java编程语言中,特别是在算法竞赛的环境下,经常会遇到需要对数据进行自定义排序的情况。以下将详细讲解三种常见的自定义排序方式: 1. **对象数组排序**: Java不支持像C++那样的结构体,因此当需要处理具有多...
Java实现插入排序通常用到一个嵌套循环,外层循环遍历整个数组,内层循环用于找到插入位置并移动元素。 4. **希尔排序(Shell Sort)**:希尔排序是插入排序的改进版本,通过设置不同的间隔序列(希尔增量),使得...
Java自定义排序详解
在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字...希望这个解答能够满足你的需求,并帮助你深入理解Java中的自定义排序。
如果需要自定义排序规则,可以创建一个`Comparator<LocalDate>`实例。 4. 自定义日期排序: 如果需要按照特定规则(例如,先按月份排序,再按日期排序)排序,可以这样实现: ```java List<LocalDate> ...
这篇文章将为大家带来一个使用 Comparable 接口实现自定义排序的示例。 首先,让我们来了解一下 Comparable 接口。Comparable 接口是 Java 中的一个接口,它定义了一个compareTo 方法,该方法用于比较两个对象的...
Java针对ArrayList自定义排序的2种实现方法 Java语言中提供了多种方式来实现ArrayList的自定义排序,今天我们将介绍其中的两种实现方法。首先,让我们了解一下ArrayList的基本概念。ArrayList是一种动态数组,能够...