简介

  • values():
    Collection<K> values()方法是获取集合中的所有的值----没有键,没有对应关系(但貌似是排好序的)。
  • KeySet():
    Set<K> keySet()返回值是个只存放key值的Set集合(集合中是有序存放的,但在jre1.7前是无序的)。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键(key)对应的值。
  • entrySet():
    Set<Map.Entry<K,V> entrySet()返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的。entrySet()迭代后可以getKey(),getValue()取key和value。

使用迭代器迭代Map

  • 尽量的使用entrySet()来进行迭代,效率会比使用keySet()要高很多


1.keySet()

  • 使用while循环迭代(之后的代码直接替代到测试代码里面就可以测试了)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestMap {
    public static void main(String[] args){
        Map<Integer,String> map = new HashMap<>();
        for (int i = 0; i < 5; i++){
            map.put(i,""+i);
        }
/**************测试代码***********************/

        //先获取map集合的所有键的Set集合
        Set<Integer> keySet = map.keySet();
        //有了Set集合,就可以获取其迭代器。
        Iterator<Integer> iterator = keySet.iterator();
        //开始读取
        while (iterator.hasNext()){
            int key = iterator.next();//通过迭代器获取set中的键(key)
            String value = map.get(key);//有了键可以通过map集合的get方法获取其对应的值。
            System.out.println(key+":"+value);
        }
        
/**********************************************/
    }
}
  • 运行结果
0:0
1:1
2:2
3:3
4:4
  • 其实可以简化为for循环(本质一样)
Set<Integer> keySet = map.keySet();
for (Iterator<Integer> iterator = keySet.iterator();iterator.hasNext();){
    int key = iterator.next();
    String value = map.get(key);
    System.out.println(key+":"+value);
}

2.entrySet()

//通过entrySet()方法将map集合中的映射关系取出(这个关系就是Map.Entry类型)
Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
//将关系集合entrySet进行迭代,存放到迭代器中,开始读取
for (Iterator<Map.Entry<Integer,String>> iterator = entrySet.iterator();iterator.hasNext();){
    Map.Entry<Integer,String> temp = iterator.next();//获取Map.Entry关系对象temp
    int key = temp.getKey();//通过关系对象获取key
    String value = temp.getValue();//通过关系对象获取value
    System.out.println(key+":"+value);
}

结尾

研究的过程中学到了不少,主要还是搞明白了迭代器……对hashmap更加熟悉了

Last modification:April 14th, 2019 at 06:59 am