目录
一、Map集合特点
二、Map集合遍历
三、Map存值和取值
四、TreeMap和HashMap的区别
一、Map集合特点
1.通过键值对的形式存储值。
Map> map = new HashMap<>();
2.键位不能重复。
往map集合增加重复的键位"AA";
Map> map = new HashMap<>(); // 放值 map.put("AA", "哈哈"); map.put("AA", "优优"); map.put("BB", "呵呵"); map.put("CC", "啊啊"); map.put("DD", "咯咯"); // 打印长度 System.out.println(map.size());
输出:
解析:重复的键位没有输出
3.值位可以重复。
往map集合增加重复的值位"哈哈";
Map> map = new HashMap<>(); // 放值 map.put("AA", "哈哈"); map.put("EE", "哈哈"); map.put("BB", "呵呵"); map.put("CC", "啊啊"); map.put("DD", "咯咯"); // 打印长度 System.out.println(map.size());
输出:
解析:值位重复不影响输出。
4.如果键位重复了,值位会覆盖。
Map> map = new HashMap<>(); // 放值 map.put("AA", "哈哈"); map.put("AA", "优优"); map.put("BB", "呵呵"); map.put("CC", "啊啊"); map.put("DD", "咯咯"); // 取值 System.out.println(map.get("AA")); // 打印长度 System.out.println(map.size());
输出:
解析:两个"AA"键位重复了,优优把哈哈覆盖了(后者会把前者覆盖)。
5.无序。
Mapmap = new HashMap<>(); // 放值 map.put("LDH", "刘德华"); map.put("ZLY", "赵丽颖"); map.put("YM", "杨幂"); Set > entrySet = map.entrySet(); // foreach for (Entry entry : entrySet) { String key = entry.getKey(); Object value = entry.getValue(); System.out.println(key + "t" + value); }
输出:
解析:没有按照顺序输出。
二、Map集合遍历
Map> map = new HashMap<>();
// 放值
map.put("CE", "啊啊");
map.put("AC", "哈哈");
map.put("EE", "优优");
map.put("BU", "呵呵");
map.put("DA", "咯咯");
1.foreach
Set> entrySet = map.entrySet(); for (Entry entry : entrySet) { String key = entry.getKey(); Object value = entry.getValue(); System.out.println(key + "t" + value); }
2.迭代器:官方推荐的循环取值遍历方式
Set> entrySet = map.entrySet(); Iterator > iterator = entrySet.iterator(); while(iterator.hasNext()) { Entry next = iterator.next(); System.out.println(next.getKey() + "t" + next.getValue()); }
输出:
三、Map存值和取值
案例:
package com.zking.Test;
public class Dog {
private Integer did;
private String dname;
public Dog() {
super();
// TODO Auto-generated constructor stub
}
public Dog(Integer did, String dname) {
super();
this.did = did;
this.dname = dname;
}
public Integer getDid() {
return did;
}
public void setDid(Integer did) {
this.did = did;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
@Override
public String toString() {
return "Dog [did=" + did + ", dname=" + dname + "]";
}
}
package com.zking.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
public class Test {
public static void main(String[] args) {
// 1.存值
// 键位代表狗窝,值位代表狗
Map> map = new HashMap<>();
for (int i = 1; i <= 10; i++) {// i代表键位狗窝,有10个狗窝
// 定义一个存放狗放入数组
List listDog = new ArrayList();
for (int j = 1; j <= 10; j++) {// j代表值位狗,有10只狗
Dog d = new Dog(j, i + "狗" + j + "号");// j代表键位,i代表值位
listDog.add(d);// 把狗放到listDog集合里面
}
map.put(i + "", listDog);// 把键位(i),值位(listDog)增加到map集合里面
}
// 2.取值
Set>> entrySet = map.entrySet();
for (Entry> e : entrySet) {
// 获取键位和值位
String key = e.getKey();
System.out.println("狗窝第:" + key + "个。");
List value = e.getValue();
for (Dog d : value) {
System.out.println("t" + d);
}
}
}
}
输出:
一直输出到狗窝第10个。
四、TreeMap和HashMap的区别
HashMap hashMap = new HashMap<>();
TreeMap treeMap = new TreeMap<>();
1.TreeMap键位可以为空,值位可以为空 ;
hashMap.put(null, null);
2.TreeMap键位不能为空,值位可以为空(如果键位为null,会报空指针异常错误);
treeMap.put("", null);
完。



