一、概念
集合中的数据,存在一一对应的映射关系
Map:将键映射到值得对象,一个映射不能包含重复的键,每个键最多只能映射到一个值
二、方法
A:删除功能
void clear():移除集合中的所有键值对元素
V remove(Object key):根据键移除键值对元素,并返回值
B:判断功能
boolean containsKey(Object key):判断集合中是否包含指定的键
boolean containsValue(Object value):判断集合中是否包含指定的值
boolean isEmpty():判断集合是否为空
C:获取功能
Set<Map.Entry<K,V>> entrySet():获取键值对对象的集合,遍历键值对对象,
利用getKey(),getValue()取出键和值(理解即可)
V get(Object key):根据键获取值
Set<K> keySet():获取所有的键
Collection<V> values():获取所有的值
D:添加功能
V put(K key,V value):集合添加键值对
E:长度功能
int size():键值对对数。
package com.edu.map;
import java.util.HashMap;
import java.util.Set;
public class MapDemo {
public static void main(String[] args) {
HashMap<Integer, String> hMap = new HashMap<Integer, String>();
hMap.put(1, "小明");
hMap.put(2, "小红");
hMap.put(3, "小话");
hMap.put(4, "小白");
//void clear():移除集合中的所有键值对元素
//hMap.clear();
//V remove(Object key):根据键移除键值对元素,并返回值
String remove = hMap.remove(2);
System.out.println("移除的值为"+remove);
//boolean containsKey(Object key):判断集合中是否包含指定的键
boolean b = hMap.containsKey(2);
System.out.println(b);
//boolean containsValue(Object value):判断集合中是否包含指定的值
boolean c = hMap.containsValue("sd");
System.out.println(c);
//boolean isEmpty():判断集合是否为空
boolean empty = hMap.isEmpty();
System.out.println(empty);
System.out.println("--------------------");
//V get(Object key):根据键获取值
//Set<K> keySet():获取所有的键
Set<Integer> set = hMap.keySet();
for (Integer key : set) {
System.out.println(key+" "+hMap.get(key));
}
}
}
三、HashMap
元素顺序:元素顺序不可预测
底层算法:哈希算法对键没有要求(仅仅相对于TreeMap来说)
需要重写javabean里面的hashCode()和equals()方法
重写了Student里面的hashCode()和equals()方法
package com.edu.map;
import java.util.HashMap;
import java.util.Set;
/**
* 存入(String,Student)键:String(国籍) 值:Student
*
*/
public class HashMapDemo {
public static void main(String[] args) {
HashMap<String, Student> sMap = new HashMap<String,Student>();
Student s1 = new Student("郭德纲", 50);
Student s2 = new Student("于谦", 50);
Student s3 = new Student("岳云鹏", 50);
Student s4 = new Student("孙越", 50);
sMap.put("中国", s1);
sMap.put("美国", s2);
sMap.put("英国", s3);
sMap.put("法国", s4);
Set<String> set = sMap.keySet();
for (String key : set) {
System.out.println(key+" "+sMap.get(key).getName()+" "+sMap.get(key).getAge());
}
}
}