- Map,用于保存具有映射关系的数据: key-value(双列元素)
- key和value可以是任意引用类型的数据,会封装到HashMap$Node对象中
- key不允许重复,原因和hashset一样, 指定重复的key相当于替换
- value是可以重复的
- Map接口的常用实现类: HashMap,Hashtable和Properties
- HashMap是Map接口使用频率最高的实现类
- HashMap是以key-val对的方式来存储数据
- key 不能重复,但是值可以重复,允许使用null键和null值
- 如果添加相同的key,则会覆盖原来的key-val,等同于修改(key不会替换,val会)
- 与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的
- HashMap没有实现同步,因此是线程不安全的
public class MapDemo01 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("no1", "ll");
map.put("no2", "java");
map.put("no2", "spring");
map.put("no3", "c#");
map.put("no4", "c#");
System.out.println(map);
System.out.println(map.get("no1"));
}
}
常用方法
- put 添加
- remove 根据键删除映射关系
- get 根据键获取值
- size 获取元素个数
- isEmpty: 判断个数是否为0
- clear: 清除
- containsKey: 查找键是否存在
public class MapMethod {
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("马云", "阿里巴巴");
hashMap.put("刘强东", "京东");
hashMap.put(null, "网易");
hashMap.put("罗永浩", null);
hashMap.remove("马云");
Object object = hashMap.get("刘强东");
System.out.println(object);
System.out.println(hashMap.size());
System.out.println(hashMap.isEmpty());
System.out.println(hashMap.containsKey("罗永浩"));
System.out.println(hashMap);
}
}
遍历
public static void main(String[] args) {
HashMap hashMap = new HashMap();
hashMap.put("马云", "阿里巴巴");
hashMap.put("刘强东", "京东");
hashMap.put(null, "网易");
hashMap.put("罗永浩", null);
Set keySet = hashMap.keySet();
for (Object key : keySet) {
System.out.println(key + "-" + hashMap.get(key));
}
Iterator iterator = keySet.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key + "-" + hashMap.get(key));
}
Collection values = hashMap.values();
for (Object value : values) {
System.out.println(value);
}
Iterator iterator1 = values.iterator();
while (iterator1.hasNext()) {
Object next = iterator1.next();
System.out.println(next);
}
Set entrySet = hashMap.entrySet();
for (Object entry : entrySet) {
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey() + "-" + m.getValue());
}
Iterator iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
Object next = iterator2.next();
Map.Entry m = (Map.Entry) next;
System.out.println(m.getKey() + "-" + m.getValue());
}
}
public static void main(String[] args) {
Map hashMap = new HashMap();
hashMap.put(1, new Employee(1, "ll1", 68000.0));
hashMap.put(2, new Employee(2, "ll2", 4000.0));
hashMap.put(3, new Employee(3, "ll3", 9000.0));
Set keySet = hashMap.keySet();
for (Object key : keySet) {
Employee employee = (Employee) hashMap.get(key);
if (employee.getSalary() > 18888) {
System.out.println(key + "-" + employee);
}
}
Set entrySet = hashMap.entrySet();
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next();
Employee employee = (Employee) entry.getValue();
if (employee.getSalary() > 18888) {
System.out.println(entry.getKey() + "-" + employee);
}
}
}