Java map存放数组并取出值代码详解

时间:2022-09-23 14:40:49

获取map的值主要有四种方法,这四种方法又分为两类,一类是调用map.keySet()方法来获取key和value的值,另一类则是通过map.entrySet()方法来取值,两者的区别在于,前者主要是先获取到所有的key的集合,当你需要查询value的值的时候需要通过key来查询value,后者则直接将key和value的键值对直接取出来,只用查询一次,对于那种性能更好,我觉得还是用map.entrySet()更好一点,具体请参见map.keySet()和map.EntrySet()的比较,接下来就具体介绍一下四种遍历方法以及map里面的元素通过key或者value来比较大小并排序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Test {
  public static void main(String[] args) {
    Map<String,String> map = new HashMap<String,String>();
    map.put("b","4");
    map.put("a","5");
    map.put("c","3");
    map.put("d","5");
    //通过map.keySet()方法
    //方法一:通过得到key的值,然后获取value;
    /*for(String key : map.keySet()){
      String value = map.get(key);
      System.out.println(key+" "+value);
    }*/
    //使用迭代器,获取key;
    /*Iterator<String> iter = map.keySet().iterator();
    while(iter.hasNext()){
      String key=iter.next();
      String value = map.get(key);
      System.out.println(key+" "+value);
    }*/
    //通过map.entrySet()方法
    //方法一:循环map里面的每一对键值对,然后获取key和value
    /*for(Entry<String, String> vo : map.entrySet()){
      vo.getKey();
      vo.getValue();
      System.out.println(vo.getKey()+" "+vo.getValue());
    }*/
    /*//使用迭代器,获取key
    Iterator<Entry<String,String>> iter = map.entrySet().iterator();
    while(iter.hasNext()){
      Entry<String,String> entry = iter.next();
      String key = entry.getKey();
      String value = entry.getValue();
      System.out.println(key+" "+value);
    }*/
    //将map<String,String> 转化为ArryList,但list里面的元素为Entry<String,String>
    List<Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
    Collections.sort(list,new Comparator<Entry<String,String>>(){
      @Override
      public int compare(Entry<String, String> o1,
          Entry<String, String> o2) {
        int flag = o1.getValue().compareTo(o2.getValue());
        if(flag==0){
          return o1.getKey().compareTo(o2.getKey());
        }
        return flag;
      }
    });
    //遍历list得到map里面排序后的元素
    for(Entry<String, String> en : list){
      System.out.println(en.getKey()+" "+en.getValue());
    }
  }
}

 

运行输出

?
1
2
3
4
c 3
b 4
a 5
d 5

注:当value值相同时,比较key大小,按照从小到大排序。

总结:

以上就是本文关于Java map存放数组并取出值代码详解的全部内容,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。

原文链接:http://blog.csdn.net/zhangbingtao2011/article/details/53581823