#简介
-
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更加熟悉了