一、双列集合框架各个接口与类的层次结构
- 双列集合结构
1、Map 接口
-
Map集合的特点
-
Map是一个双列集合,其中每个元素表示一个键值对作为<key,value> ;
-
Map集合中的元素,key和value的数据类型可以相同,也可以不同
-
Map集合中的元素,key不允许出现重复,value可以重复
-
Map集合中的元素,key和value是一一对应的(映射)
-
Map 接口的成员方法:
-
public V put(K key , V value):把指定的键(key)和指定的值(value)添加到Map集合中
-
public V remove(Object key):把指定的key所对应的value从Map集合中删除,返回被删元素的值
-
public V get(Object key):在集合中获取指定key对应value的元素
-
boolean containsKey(Object key):判断集合中是否含有xxxkey
-
boolean containsValue(Object key):判断集合中是否含有xxxvalue
-
public Set KeySet():把Map中所有的key 存储到 set集合返回
-
public Set< Map.Entry<K,V> > entrySet():获取Map中所有key和value对象的集合(Entry)存储在集合 Set 中
-
Map 接口有三个子类对象:
- HashMap 集合 (重点掌握)
- 键是哈希表结构,可以保证键的唯一性。
- 线程不安全,效率高。
- 允许null键和null值。(在实际应用时尽可能避免此状况,在实际开发时,map中的数据来源多数是手动存储和数据库读取,null容易导致存储失败)
- HashMap 集合 (重点掌握)
- LinkedHashMap 集合(次之)
- 使用 Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
- 由哈希表保证键的唯一性,不可重复。
- 由链表保证键盘的有序(存储和取出的顺序一致)。
- 线程安全,效率低。
- 不允许null键和null值。
- TreeMap 集合—— 键是红黑树结构,可以保证键的排序和唯一性(废弃)
Demo代码示例:
public class Demo_Map {
public static void main(String[] args) {
Map<Object,Object> map = new HashMap<Object,Object>();
// put(K key,V value):添加元素。
map.put(19,"瓜娃子");
map.put(23,"张三");
map.put(29,"李四");
map.put(25,"王五");
map.put(59,"赵六");
System.out.println("map:"+map);
System.out.println("==============================================================================");
// public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
System.out.println("根据key获取到的value是:"+map.get(29));
System.out.println("==================================================");
//boolean containsKey(Object key):判断集合是否包含指定的键
System.out.println("集合中是否存在对应的key:"+map.containsKey(22));
System.out.println("==================================================");
//Set keySet():获取集合中所有键的集合
System.out.println("获取map集合中所有的key存储在set集合中:"+map.keySet());
System.out.println("==================================================");
//boolean containsValue(Object value):判断集合是否包含指定的值
System.out.println("集合中是否存在对应的value:"+map.containsValue("张三"));
System.out.println("==================================================");
//remove(Object key):根据键删除键值对元素,并把值返回
map.remove("王五");
System.out.println("map:"+map);
System.out.println("==================================================");
//void clear():移除所有的键值对元素
map.clear();
System.out.println("map:"+map);
System.out.println("==================================================");
//boolean isEmpty():判断集合是否为空
System.out.println("集合是否为空?:"+map.isEmpty());
System.out.println("==================================================");
//int size():返回集合中的键值对的对数(集合长度查询)
System.out.println("集合的长度:"+map.size());
}
}
运行结果:
注:三种 Map 集合使用的方式都是一样的,只是存储的数据的形式不一样而已。在开发中主要使用的是 HashMap 集合。