『壹』 如何對HashMap中的元素進行排序
HashMap是無序的集合,對裡面的元素進行排序,需要藉助其他有序的集合
傳統的思路: 把每一個HashMap的鍵值對作為一個Entry 存入到ArrayList<Entry>里. 然後對ArrayList進行排序.
java8新思路: 利用流對集合進行處理,非常強大, 如果配合上Lambda表達式, 就是簡潔且強大.
參考代碼
importjava.util.HashMap;
//java8流處理
publicclassDemo1{
publicstaticvoidmain(String[]args){
HashMap<String,Integer>map=newHashMap<>();
map.put("lucy",76);
map.put("tom",92);
map.put("jack",86);
//按照Key(名字)進行排序,並列印
map.entrySet().stream().sorted((e1,e2)->e1.getKey().compareTo(e2.getKey())).forEach(System.out::println);
System.out.println("-------分割線----------");
//按照value(分數)進行排序,並列印
map.entrySet().stream().sorted((e1,e2)->e1.getValue().compareTo(e2.getValue())).forEach(System.out::println);
}
}
『貳』 hashmap按value排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;如滿意,請採納
『叄』 java hashmap按照value來排序
ArrayList<Entry<String,String>> list = new ArrayList<Entry<String,String>>(sMap.entrySet());
Collections.sort(list, new Comparator<Object>(){
public int compare(Object e1, Object e2){
int v1 = Integer.parseInt(((Entry<String,String>)e1).getValue().toString());
int v2 = Integer.parseInt(((Entry)e2).getValue().toString());
return v1-v2;
}
});
for (Entry<String, String> e: l){
System.out.println(e.getKey()+" "+e.getValue());
}