Map集合
Map集合是双列集合,存储的是一一对应的映射关系,每个元素由键(key)和值(value)组成,一个键对应一个值,不能有重复的键(可以有重复的值),因此通过键可以找到值。
常用子类
- HashMap:采用哈希表结构存储数据,不能保证存取顺序。
- LinkedHashMap:采用哈希表+链表结构存储数据,可以保证存取顺序一致。
同时为了保证键值的唯一,需要重写键对应的类的hashcode()方法和equals()方法(一般将自定义类型作为键的情况下需要重写)。
常用方法
public V put(K key, V value)
: 把指定的键与值添加到Map集合中,如果键值原本不存在,则添加进去返回null,否则覆盖旧的value并返回旧的value。public V remove(Object key)
: 把指定的键所对应的键值对元素 在Map集合中删除,返回被删除元素的value。public V get(Object key)
根据指定的键获取对应的值。boolean containsKey(Object key)
判断集合中是否包含指定的键。boolean containsValue(Object value)
判断集合中是否包含指定的值。public Set<K> keySet()
: 获取Map集合中的键Set集合。public Set<Map.Entry<K,V>> entrySet()
: 获取到Map集合中的键值对对象的Set集合。
键值对对象
Entry将键与值的对应关系封装成对象。
public K getKey()
:获取Entry对象中的键。public V getValue()
:获取Entry对象中的值。
在Map集合获取所有Entry对象的方法:public Set<Map.Entry<K,V>> entrySet()
: 获取到Map集合中的键值对对象的Set集合。
遍历Map集合
使用强化for循环遍历Map的键或者键值对。
public class Maptest {
public static void main(String[] args) {
//创建Map
HashMap<String, String> map = new HashMap<String,String>();
//添加元素到Map
map.put("唱", "sing");
map.put("跳", "dance");
map.put("rap", "rap");
map.put("篮球", "basketball");
//获取键集(方法一)
Set<String> keys = map.keySet();
// 遍历键集合
for (String key : keys) {
String value = map.get(key);
System.out.println(value);
}
//获取键值对集合(方法二)
Set<Entry<String,String>> entrySet = map.entrySet();
// 遍历键值对集合
for (Entry<String, String> entry : entrySet) {
// 解析键值对
String key = entry.getKey();
String value = entry.getValue();
System.out.println(value);
}
}
}