使用Collections.sort对查询到的list按指定的人员先后顺序进行排序:
/**
* 描述:使用Collections.sort 对list进行指定排序
* <br/>
* @author shitou
*/
public void sortByTargetName(List<ZhsjydbYXGZFItem> list){
Collections.sort(list, new Comparator<ZhsjydbYXGZFItem>(){
Map<String, Integer> map = getNameMap();
public int compare(ZhsjydbYXGZFItem o1, ZhsjydbYXGZFItem o2) {
Integer i1 = map.get(o1.getUserid()); //取不到会返回 null
Integer i2 = map.get(o2.getUserid()); //取不到会返回 null
// 取不到则表示对此人员不进行排序,赋一个高点的值(排列在后面)
if(i1 == null) i1 = 99;
if(i2 == null) i2 = 99;
return i1 - i2;
}
});
}
/**
* 描述:需求进行排序的人员Map<姓名, 排序值>
* 排序值小的排列在前面
* <br/>
* @author shitou
* @return Map<String,Integer>
*/
public Map<String, Integer> getNameMap(){
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("张三", 1);
map.put("李四", 2);
map.put("王二", 3);
map.put("刘五", 4);
return map;
}
再贴另一种排序,也是使用Map :
/**
* 描述:按名字对list进行排序
* <br/>
* @author shitou
* @param list
* @param arrName 排序的名字数组
* String []arrName = {"高孟平","杨强","胡劲松","李文云","段光","蔡葆锐"}; // 排序的数组,先后排序排列
* @return List<ZhsjydbYXGZFItem>
*/
public List<ZhsjydbYXGZFItem> sortByTargetName(List<ZhsjydbYXGZFItem> list, String[] arrName){
if(list == null || list.size() <= 0) return list;
Map<String, ZhsjydbYXGZFItem> map = new HashMap<String, ZhsjydbYXGZFItem>();
for (int i = 0; i < list.size(); i++) {
ZhsjydbYXGZFItem item = list.get(i);
if(arrName[0].equals(item.getUserid())){
map.put("A" + i, item);
}else if(arrName[1].equals(item.getUserid())){
map.put("B" + i, item);
}else if(arrName[2].equals(item.getUserid())){
map.put("C" + i, item);
}else if(arrName[3].equals(item.getUserid())){
map.put("D" + i, item);
}else if(arrName[4].equals(item.getUserid())){
map.put("E" + i, item);
}else if(arrName[5].equals(item.getUserid())){
map.put("F" + i, item);
}else{
map.put("G" + i, item);
}
}
Object []arrObj = map.keySet().toArray();
Arrays.sort(arrObj);
List<ZhsjydbYXGZFItem> resutlList = new ArrayList<ZhsjydbYXGZFItem>();
for(int i = 0; i < arrObj.length; i++){
resutlList.add(map.get(arrObj[i].toString()));
}
return resutlList;
}
分享到:
相关推荐
`Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...
Java提供了一个强大的工具类 Collections,它提供了sort方法来对List排序。同时,我们还需要使用Comparator接口来定义排序规则。在这个例子中,我们使用匿名内部类来实现Comparator接口: ```java Collections.sort...
在Java中,我们可以使用`Collections.sort()`方法对List对象进行排序,但这个方法默认按照Unicode编码排序,对于中英文混合的情况并不适用。因此,我们需要自定义一个Comparator来完成这个任务。 1. **自定义...
List 可以使用自身的 sort 方法,或者使用 Collections.sort() 方法来排序。 9. Arrays.asList 方法后的 List 可以扩容吗? Arrays.asList 使用的是 final 数组,并且不支持 add 方法,不支持扩容。 10. List 和 ...
例如,如何使用Collections.sort()方法对List进行排序,以及如何自定义比较器Comparator实现复杂排序逻辑。对于Map,你可以学习到如何遍历Map以及如何根据键或值进行排序。 `内部类`文件可能详细阐述了内部类的使用...
`Arrays.sort()`可以对数组进行排序,而`Collections.sort()`适用于集合。此外,Java标准库还包含各种排序算法,如快速排序、归并排序和插入排序。理解这些排序算法的工作原理,比如时间复杂度和稳定性,可以帮助...
Collections工具类是Java中一个功能强大的工具类,提供了大量针对Collection/Map的操作。下面我们将对该工具类进行详细的介绍。 排序操作 Collections工具类提供了多种排序操作,主要针对List接口相关。这些方法...
- 操作数组:使用Arrays类提供的静态方法,如排序sort()、复制copyOf()等,可以进行高效的数组操作。 数组的使用场景非常广泛,无论是处理一组用户输入的数据,还是存储集合中的元素,数组都是一个不可或缺的工具。...
例如,你可以使用`Array.Sort()`或`List<T>.Sort()`方法,并传入一个匿名方法作为比较器,来决定元素的排序顺序。这使得我们能够在运行时动态指定排序规则,比如按年龄降序排列或者按名字升序排列。 例如: ```...
- 希尔排序:是插入排序的改进版,通过插入排序的插入操作,但先将数组按一定间隔分组进行排序,逐步减小间隔,直到间隔为1,最后进行一次直接插入排序。 - 时间复杂度通常为O(n^2),但在部分有序的情况下,效率较...
例如,`Collections.sort(list)`可以对List接口的实现类进行排序,前提是列表中的元素实现了Comparable接口,或者在调用sort时传入自定义的Comparator。 在编程实践中,推荐使用集合接口而不是具体的实现类,这样...
在查询时,将这个`Sort`对象传递给`IndexSearcher`的`search()`方法,即可得到按价格排序的搜索结果。 除了基于字段的排序,Lucene还支持复合排序,即同时根据多个字段进行排序。例如,你可能希望先按价格排序,...
数组是Java中一种重要的数据结构,它用于存储相同类型的数据集合。数组具有以下特点: 1. **数组是一种引用数据类型**:这意味着数组实际上是一个指向一组数据的引用。 2. **数组元素的类型一致性**:数组内的所有...
例如,使用Java内置的`Arrays.sort()`方法对数组进行升序排序: ```java Arrays.sort(numbers); ``` 此外,数组还有查找操作。线性查找是最简单的,但效率较低,适用于小规模数据。二分查找适用于已排序的数组,...
本文将详细介绍Java中一种经典的排序算法——冒泡排序,并通过一个示例代码展示其使用方法。 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数组,比较相邻的元素并根据需要交换它们的位置。这个过程会一直...
`Arrays`类是Java中一个强大的工具,提供了一系列实用的方法来处理数组。理解和熟练使用这些方法可以极大地提升我们的编程效率,同时深入研究源码能进一步提升我们的编程能力,更好地理解和运用数组操作。
在Java中,我们可以使用Collections.sort()方法,传入自定义的Comparator来实现这一目标。Comparator会比较两个城市的首字母,根据Unicode值进行升序排列。 为了实现字母分组,我们可以创建一个AlphabetIndexer类,...
在`simulate()`方法中,我们首先按进程的到达时间对进程队列进行排序。然后,按照排序后的顺序依次处理每个进程。在处理每个进程时,我们需要模拟CPU的执行过程,这可能涉及到计算每个进程的剩余执行时间,以及更新...
例如,Java的`PriorityQueue`类可以方便地实现优先队列,而`Collections.sort()`可以用于快速排序或冒泡排序。 为了分析和验证这些算法,你可以参考"排序查找最小的第k个数.docx"文档,它可能包含了具体的代码示例...
总的来说,`Comparator`是Java中一个强大的工具,它提供了在不改变原有类设计的情况下,实现自定义排序逻辑的能力,广泛应用于各种数据结构和算法中。在实际项目中,理解和熟练运用`Comparator`能极大地提高代码的...