map与set的遍历

时间:2023-11-28 15:01:56

map有四种方式:

1.直接遍历 keySet

2.使用Iterator //注意next放回的对象是map.Entry<K,V>,而使用的iterator是通过entrySet返回的一个set得到的

3.直接遍历 entrySet

4.遍历values(); //这种不能得到key

代码事例:

package test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; /**
* Map的遍历
*
* @author lin
*
*/
public class MapTest { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3); /*
* 用keySet()
*/
Set<String> set = map.keySet();
for(String key : set){ int value = (Integer) map.get(key);
System.out.println("key:" + key + " value:"+value);
} /*
* 用entrySet()
* 注意:返回的是一个Set
* 这个方法的Iterator.next()返回的才是Map.Entry<K,V> ,如果Set
* 用这个方法的话,那么放回的不是Map.Entry<K,V>
* 反正就是要主要Map与Set用这个方法遍历的不同
*/ Set<Map.Entry<String, Integer>> set2 = map.entrySet();
Iterator it = set2.iterator(); while(it.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)it.next();
String key = entry.getKey();
int value = entry.getValue(); System.out.println("key:" + key + " value:" + value);
} /*当map容量很大时,这个效率最高
* 直接遍历entrySet()
*/
for(Map.Entry<String, Integer> entry : map.entrySet()){ System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
} /*
* 通过values遍历
* 注意这种方法得不到key的
*/
for(Integer value : map.values()){
System.out.println("key:" + map.get(value) + " value:" + value);
}
} }
package test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set; public class SetTest { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("a");
set.add("b");
set.add("c"); Iterator it = set.iterator();
while(it.hasNext()){ String key = (String)it.next();
System.out.println("key:" + key);
}
} }