HashMap和Hashtable的遍历
HashMap | Hashtable |
---|---|
keySet() | keySet() |
entrySet() | entrySet() |
value() | elements() |
iterator | iterator |
此外,Hashtable还可以使用keys() 和Enumeration进行遍历,闲言少叙,直接上代码
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
public class Test {
public static void main(String[] args) {
int[] arr = {0,1,2,3,4,5,6,7,8,9};
HashMap<Integer, Integer> map = new HashMap<>();
Hashtable<Integer, Integer> table = new Hashtable<>();
// 添加元素
for(int i = 0; i < 10; i++) {
map.put(arr[i], arr[i]);
table.put(arr[i], arr[i]);
}
// -----------------HashMap遍历------------------------
System.out.println("-----------------HashMap遍历------------------------");
// 1.使用keySet()
System.out.println("1.使用keySet()");
for(Integer key : map.keySet()) {
System.out.println(key + " : " + map.get(key));
}
// 2.使用entrySet()
System.out.println("2.使用entrySet()");
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// 3.使用value(),但不能得到key
System.out.println("3.使用value(),但不能得到key");
for(Integer i : map.values()) {
System.out.println(i);
}
// 4.使用Iterator
System.out.println("4.使用Iterator");
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<Integer, Integer> entry = it.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// -----------------Hashtable遍历------------------------
System.out.println("-----------------Hashtable遍历------------------------");
// 1.使用keySet()
System.out.println("1.使用keySet()");
for(Integer key : table.keySet()) {
System.out.println(key + " : " + table.get(key));
}
// 2.使用keys() + Enumeration
System.out.println("2.使用keys()");
Enumeration<Integer> en1 = table.keys();
while(en1.hasMoreElements()) {
int key = en1.nextElement();
System.out.println(key + " : " + table.get(key));
}
// 3.使用entrySet() + iterator
System.out.println("3.使用entrySet()");
Iterator<Map.Entry<Integer, Integer>> it1 = table.entrySet().iterator();
while(it1.hasNext()) {
Map.Entry<Integer, Integer> entry = it1.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// 4.使用elements()
System.out.println("4.使用elements(),相当于遍历value");
Enumeration<Integer> en2 = table.elements();
while(en2.hasMoreElements()) {
System.out.println(en2.nextElement());
}
}
}
注:HashMap和Hashtable的存储和遍历都是无序的