package com.jefflee;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashmapTest {
// 遍历Hashmap的四种方法
public static void main(String[] args) {
//hashmap可以存一个null,把他散列到0
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put(null, 4);
map.put(null, 5);
System.out.println("map的size是" + map.size());
//Map.entry接收hashmap.entrySet()
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + "Value = " + entry.getValue());
}
//遍历键,遍历值
// for (String key :
// map.keySet()) {
// System.out.println(key);
// }
// for (Integer value :
// map.values()) {
// System.out.println(value);
// }
//用迭代器 优点 可以使用iterator.remove()
Iterator<Map.Entry<String, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String, Integer> entry = entries.next();
System.out.println(entry.getKey()+entry.getValue());
}
//通过键找值遍历
//效率太低
for (String key :
map.keySet()) {
System.out.println(key + map.get(key));
}
/**简单猜想:增强循环for-each为啥不能在for-each里remove
*找到一篇资料,【注:未验证和确认,只是简单的猜想!!!】
*/
// Java的foreach語法,其實是編譯器給的語法蜜糖。如果foreach要走訪的是陣列,事實上,編譯器會自動展開為以下的程式碼:
public void go(int ai[]) {
int ai1[] = ai;
int i = ai1.length;
for(int j = 0; j < i; j++) {
int k = ai1[j];
System.out.println(k);
}
}
// 若foreach運用在Collection的實作物件上,其實編譯器會展開為:
public void go(Collection collection) {
String s;
for(Iterator iterator = collection.iterator();
iterator.hasNext(); System.out.println(s))
//在这里remove的话,println的东西就无法预测了
s = (String)iterator.next();
}
}
}
hashmap的存值,各种遍历方法
最新推荐文章于 2023-08-06 23:38:37 发布