mapコレクションソート
3057 ワード
主にjdkを参照する:
java.牙列缺损
java.牙列缺损
java.lang.Object
java.util.Collections
public static <T> void sort(List<T> list,
Comparator<? super T> c)
したコンパレータの に って したリストをソートします.このリスト のすべての は、 したコンパレータを する があります.
(すなわち、リスト の の
e 1と
e 2 、
c.compare(e 1,e 2)は げ してはならない
ClassCastException).
このソートは、sortの び しによって しい が ソートされないことを します.
ソート・アルゴリズムは、 サブリストの が サブリストの より さい 、マージを する されたマージ・ソート・アルゴリズムです.このアルゴリズムは、 なn log(n)パフォーマンスを します. したリストは である がありますが、サイズ である はありません.このインプリメンテーションでは、 したリストを1つの にダンプし、 をソートし、 の する の のリストをリセットします.これにより、リンクリストをその でソートしようとすることによるn 2 log(n) が される.
パラメータ:list
-ソートするリスト.c
-リスト を する .
null は、 を するべきことを します.
の .
:ClassCastException
-リストに したコンパレータが まれている
いに する .UnsupportedOperationException
- したリストのリスト がサポートされていない
set .
ソート・ルール・オブジェクトの import java.util.Comparator;
import java.util.Map;
public class CompareSort implements Comparator<Object> {
@Override
public int compare(Object o1, Object o2) {
Map.Entry map1=(Map.Entry)o1;
Map.Entry map2=(Map.Entry)o2;
System.out.println(map1.getKey().toString().compareTo(map2.getKey().toString()));
return map1.getKey().toString().compareTo(map2.getKey().toString());
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapSort {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String, String>();
map.put("1", "qw");
map.put("a", "sdf");
map.put("r", "qw");
map.put("g", "sdf");
map.put("b", "qw");
map.put("j", "sdf");
System.out.println(map);
// map List
List list=new ArrayList(map.entrySet());
// list
Collections.sort(list, new CompareSort());
System.out.println(list);
}
}