mapコレクションソート

3057 ワード

主にjdkを参照する:
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);
	}
}