Mapのソート

1559 ワード

HashMapは無秩序です
TreeMapはkey昇順でvalueでソートできません
LinkedHashMapが入っている順番は何ですか?
 
コードは次のとおりです.
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Map<String,Integer> map = new HashMap<String, Integer>();
		map.put("zhangsan", 18);
		map.put("lisi", 17);
		map.put("wangwu", 30);
		map.put("maliu", 25);
		map.put("subi", 26);
		
		
		Set<Entry<String,Integer>> set = map.entrySet();
		List<Entry<String,Integer>> list = new ArrayList(set);
		Collections.sort(list, new Comparator<Entry<String,Integer>>() {
			@Override
			public int compare(Entry<String, Integer> o1,
					Entry<String, Integer> o2) {
//				if (o1.getValue() < o2.getValue()) {
//					return -1;
//				} else if (o1.getValue() > o2.getValue()) {
//					return 1;
//				} else {
//					return 0;
//				}
				return o1.getValue().compareTo(o2.getValue());
			}
		});
		
		map.clear();
		map = new LinkedHashMap<String, Integer>();
		for(Entry<String,Integer> entry: list){
			map.put(entry.getKey(), entry.getValue());
		}
		
		for(Entry<String,Integer> entry: map.entrySet()){
			System.err.println(entry.getKey() + "=" + entry.getValue());
		}
	}

}