Java mapのkeyとvalueを取得する方法
3051 ワード
mapのkeyとvalueを取得する方法は2つの形式に分けられる:map.keySet():mapのkeyを取得し、keyに基づいて対応するvalueを取得します.map.entrySet():mapのkeyとvalueを同時にクエリーし、一度だけクエリーする必要があります.以下はmapのkeyとvalueを取得し、map内の要素をkeyまたはvalueでサイズを比較してソートします.注意:mapのvalue値が等しい場合はkey値に基づいて並べ替えます
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class MapSort {
/**
* map key value :
map.keySet(): map key, key value;
map..entrySet(): map key value, ;
map key value, map key value ;
: map value , key
*/
public static void main(String[] args) {
Map map = new HashMap();
map.put("b","4");
map.put("a","5");
map.put("c","3");
map.put("d","5");
System.out.println("-------- map.keySet() ---------");
// map.keySet()
// : key , value;
for(String key : map.keySet()){
String value = map.get(key);
System.out.println(key+" "+value);
}
// : , key;
Iterator iter = map.keySet().iterator();
while(iter.hasNext()){
String key = iter.next();
String value = map.get(key);
System.out.println(key+" "+value);
}
System.out.println("--------- map.entrySet() --------");
// map.entrySet()
// : map , key value
for(Entry vo : map.entrySet()){
vo.getKey();
vo.getValue();
System.out.println(vo.getKey()+" "+vo.getValue());
}
// , key
Iterator> iter1 = map.entrySet().iterator();
while(iter1.hasNext()){
Entry entry = iter1.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+" "+value);
}
System.out.println("--------------- ---------------");
// map ArryList, list Entry
List> list = new ArrayList>(map.entrySet());
Collections.sort(list,new Comparator>(){
@Override
public int compare(Entry o1, Entry o2) {
int flag = o1.getValue().compareTo(o2.getValue());
if(flag == 0){
return o1.getKey().compareTo(o2.getKey());
}
return flag;
}
});
// list map
for(Entry en : list){
System.out.println(en.getKey()+" "+en.getValue());
}
}
}
-------- map.keySet() ---------
a 5
b 4
c 3
d 5
a 5
b 4
c 3
d 5
--------- map.entrySet() --------
a 5
b 4
c 3
d 5
a 5
b 4
c 3
d 5
--------------- ---------------
c 3
b 4
a 5
d 5