Java API针对集合类型排序提供了两种支持:

java.util.Collections.sort(java.util.List)

java.util.Collections.sort(java.util.List, java.util.Comparator)

第一个方法要求所排序的元素类必须实现java.lang.Comparable接口。

第二个方法要求实现一个java.util.Comparator接口。

java.lang.Comparable接口和java.util.Comparator接口是Java对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。

如果数组或集合元素是String类型,则可以利用Java API实现的Comparator对象String.CASE_INSENSITIVE_ORDER为容器元素排序。

package com.what21.collect03;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class ListSortTest {

/**

* @param args

*/

public static void main(String[] args) {

List dataList = new ArrayList();

for(int i=0;i<30;i++){

// 添加

dataList.add(new Object());

}

Collections.sort(dataList, new Comparator(){

@Override

public int compare(Object o1, Object o2) {

if(o1.hashCode() > o2.hashCode()){

return 1;

}else{

return -1;

}

}

});

// 遍历

for(Object obj : dataList){

System.out.println(obj);

}

}

}

package com.what21.collect03;

import java.util.Comparator;

import java.util.Iterator;

import java.util.TreeSet;

public class TreeSetSort {

/**

* @param args

*/

public static void main(String[] args) {

TreeSet set = new TreeSet(new Comparator() {

public int compare(Integer a, Integer b) {

return a > b ? a : b;

}

});

// ====初始化====

for (int i = 0; i < 20; i++) {

set.add((i + 1) * 10);

}

// ====集合输出====

System.out.println(set);

// ====遍历输出====

Iterator setIt = set.iterator();

while (setIt.hasNext()) {

System.out.println(setIt.next());

}

}

}

package com.what21.collect03;

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 HashMapSort {

/**

* @param args

*/

public static void main(String[] args) {

Map map = new HashMap();

map.put("d", 2);

map.put("c", 1);

map.put("b", 1);

map.put("a", 3);

List> infoIds = new ArrayList>(

map.entrySet());

// ====排序前输出====

for (int i = 0; i < infoIds.size(); i++) {

String id = infoIds.get(i).toString();

System.out.print(id + " , ");

}

System.out.println();

System.out.println("===================");

// ====排序操作====

Collections.sort(infoIds, new Comparator>() {

public int compare(Map.Entry map1,

Map.Entry map2) {

return (map1.getKey()).toString().compareTo(map2.getKey());

}

});

// ====排序后输出====

for (int i = 0; i < infoIds.size(); i++) {

String id = infoIds.get(i).toString();

System.out.print(id + " , ");

}

System.out.println();

}

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐