集合之Map
集合之Map
Map的常用方法
以下代码列举Map的常用方法:
package com.javalearn.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class TestForMap {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"zhang"); // 添加键值对,此处 1 自动装箱
map.put(2,"li");
System.out.println(map.get(2)); // 获取键对应值
System.out.println("键值对的个数:" + map.size()); // 获取键值对个数
System.out.println();
Collection<String> values = map.values(); // 获取所有值
for(String s:values) {
System.out.println(s);
}
System.out.println();
map.remove(2); // 删除一个键值对
System.out.println("键值对的个数:" + map.size());
System.out.println(map.containsKey(1)); // 是否包含键,此处contains底层使用equals方法比对,因此自定义的类型需要重写equals方法
System.out.println(map.containsValue("zhang")); // 是否包含值
map.clear(); // 清空
System.out.println(map.isEmpty()); // 判断是否为空
}
}
输出结果:
li
键值对的个数:2
zhang
li
键值对的个数:1
true
true
true
Process finished with exit code 0
遍历Map
以下代码使用多个方法遍历Map:
package com.javalearn.map2;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestForMap2 {
public static void main(String[] args) { // 十分重要
Map<Integer,String> map = new HashMap<>();
map.put(1,"zhang");
map.put(2,"wang");
// 法一:遍历key,由key得value,有2中循环方法,while和for
Set<Integer> keys = map.keySet(); // 获取key集合
Iterator<Integer> it = keys.iterator();
while (it.hasNext()) { // while循环
Integer key = it.next();
String value = map.get(key);
System.out.println(key+"="+value);
}
for (Integer key:keys) { // 增强for循环
System.out.println(key+"="+map.get(key));
}
System.out.println();
// 法二:把键值对结合成一个对象,此方法效率更高,适合大数据量
Set<Map.Entry<Integer,String>> set = map.entrySet(); // 每个键值对都变成Map.Entry的对象,所有键值对构成集合
Iterator<Map.Entry<Integer,String>> it2 = set.iterator();
while (it2.hasNext()) {
Map.Entry<Integer,String> node = it2.next();
Integer key = node.getKey(); // 获得entry对象的键
String value = node.getValue(); // 获得entry对象的值
System.out.println(key+ "="+value);
}
}
}
输出结果:
1=zhang
2=wang
1=zhang
2=wang
1=zhang
2=wang
Process finished with exit code 0