1. Map.putAll()
代码语言:javascript
复制import Java.util.HashMap;
public class Map_putAllTest {
public static void main(String[] args){
//两个map具有不同的key
HashMap map1=new HashMap();
map1.put("1", "A");
HashMap map2 = new HashMap();
map2.put("2", "B");
map2.put("3", "C");
map1.putAll(map2);
System.out.println(map1);
//两个map具有重复的key
HashMap map3=new HashMap();
map3.put("1", "A");
HashMap map4 = new HashMap();
map4.put("1", "B");
map4.put("3", "C");
map3.putAll(map4);
System.out.println(map3);
}
}
/* 输出结果:
* {3=C, 2=B, 1=A}
* {3=C, 1=B}
* 结论:putAll可以合并两个MAP,只不过如果有相同的key那么用后面的覆盖前面的
2. HashMap.entrySet()
代码语言:javascript
复制package map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
/**
* @author Administrator
*注意:HashMap不支持Iterator所以要通过其他方式迭代Map中的Key和Value
*/
public class EntrySetDemo {
public static void main(String[] args) {
HashMap<String,String> hs=new HashMap<String,String>();
//添加元素
hs.put("key1", "value1");
hs.put("key2", "value2");
hs.put("key3", "value3");
hs.put("key4", "value4");
hs.put("key5", "value5");
/**
* 获取hs返回的Set视图
* 非常注意:返回此映射中包含的映射关系的Set视图,对此Set视图的操作会反映到原来的HashMap
*/
Set<Entry<String,String>> set=hs.entrySet();
/**
* 对Set进行迭代,返回的Entry包含key和value,格式为:key=value
*/
Iterator<Entry<String,String>> iter=set.iterator();
//这种做法输出的格式为key=value
// while(iter.hasNext()){
// System.out.println(iter.next());
// }
//对entry进行迭代
while(iter.hasNext()){
Entry<String,String> entry=iter.next();//得到一个entry对象
entry.setValue("123");//将当前迭代的Entry的value替换为123
String key=entry.getKey();//获取当前迭代的entry对象(返回的Set视图中的Entry)的key
String value=entry.getValue();//获取当前迭代Entry对象的value
System.out.println(key "=" value);
entry.setValue("1");//在此替换当前迭代对象的Value,将映射到HashMap<String,String>
}
System.out.println("===========================");
//对Set视图的编辑会反应到Entry
for(Entry<String,String> entry:set){
//每个Entry就是map中的一个key及其它对应的value被重新封装的对象
for(String key:hs.keySet()){
System.out.println(key "=" hs.get(key));
}
}
}
}