/**. */ package com.encdata.lihao; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; /**. * * @author admin * */ public class ListMapSort { static class Task implements Comparator { private String taskId; private String taksName; /**. * @return the taksName */ public String getTaksName() { return taksName; } /**. * @param taksName the taksName to set */ public void setTaksName(String taksName) { this.taksName = taksName; } /**. * @return the taskId */ public String getTaskId() { return taskId; } /**. * @param taskId the taskId to set */ public void setTaskId(String taskId) { this.taskId = taskId; } /* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ @Override public int compare(Object o1, Object o2) { return 0; } } public static void main(String[] args) { List<Task> mapList = new ArrayList<Task>(); Task task1 = new Task(); task1.setTaskId("101"); task1.setTaksName("ABC"); Task task2 = new Task(); task2.setTaskId("98"); task2.setTaksName("BCD"); Task task3 = new Task(); task3.setTaskId("210"); task3.setTaksName("CDE"); Task task4 = new Task(); task4.setTaskId("201"); task4.setTaksName("DEF"); mapList.add(task1); mapList.add(task2); mapList.add(task3); mapList.add(task4); System.out.println("排序前"); for (Task task : mapList) { System.out.println(task.getTaskId()+task.getTaksName()); } Collections.sort(mapList, new Comparator<Task>(){ /** * int compare(Student o1, Student o2) 返回一个基本类型的整型, * 返回负数表示:o1 小于o2, * 返回0 表示:o1和o2相等, * 返回正数表示:o1大于o2。 */ public int compare(Task o1, Task o2) { Integer o1taskId = Integer.valueOf(o1.getTaskId()); Integer o2taskId = Integer.valueOf(o2.getTaskId()); //按照任务ID进行降序排列 if(o1taskId > o2taskId){ return -1; } if(o1taskId == o2taskId){ return 0; } return 1; } }); String condition = "D"; Pattern pattern = Pattern.compile(condition); List<Task> mapList2 = new ArrayList<>(); List<Task> mapList3 = new ArrayList<>(); for (int i = 0; i < mapList.size(); i++) { Matcher matcher = pattern.matcher((mapList.get(i)).getTaksName()); if (matcher.find()) { mapList2.add(mapList.get(i)); } } for (int i = 0; i < mapList.size(); i++) { if (mapList.get(i).getTaksName().contains("D")) { mapList3.add(mapList.get(i)); } } System.out.println("排序后"); for (Task task : mapList2) { System.out.println(task.getTaskId()+task.getTaksName()); } System.out.println("排序2后"); for (Task task : mapList3) { System.out.println(task.getTaskId()+task.getTaksName()); } } }