马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 moc 于 2018-12-26 22:32 编辑
1、Map简介
特点:
① 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
② Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。
③ 与Collection是平级接口。
Map集合方法:
1. 添加功能
V put(K key,V value) -------------> 添加元素。
如果键是第一次存储,就直接存储元素,返回null.
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值.
2. 删除功能
void clear() -----------------------> 移除所有的键值对元素
V remove(Object key) -----------> 根据键删除键值对元素,并把值返回
3. 判断功能
boolean containsKey(Object key) ----------> 判断集合是否包含指定的键
boolean containsValue(Object value) ------> 判断集合是否包含指定的值
boolean isEmpty() ---------------------------> 判断集合是否为空
4. 获取功能
Set<Map.Entry<K,V>> entrySet() --------> 返回此映射中包含的映射关系的 Set 视图。
V get(Object key) ----------------------------> 根据键获取值
Set<K> keySet() ----------------------------> 获取集合中所有键的集合
Collection<V> values() ---------------------> 获取集合中所有值的集合
5、长度功能
int size() -------------------------------------> 返回集合中的键值对的对数
示例:Map<String, String> map = new HashMap<String, String>(); // 创建集合对象
map.put('A', "Java"); // 创建元素并添加到集合
map.put('B', "C/C++");
map.put('C', "Python");
map.put('D', "PHP");
// map.clear(); // 移除所有的键值对元素
map.remove('A'); // 根据键删除键值对元素,并把值返回
map.containsKey('B'); // 判断集合是否包含指定的键
boolean isEmpty(); // 判断集合是否为空
map.size(); // 返回集合中的键值对的对数
System.out.println("map:" + map); // 输出集合名称
map.get('C'); // 根据键获取值
Set<String> set = map.keySet(); // 获取集合中所有键的集合
Collection<String> con = map.values(); // 获取集合中所有值的集合
Set<Map.Entry<String, String>> set = map.entrySet(); // 获取所有键值对对象的集合
for (Map.Entry<String, String> me : set) { // 遍历键值对对象的集合,得到每一个键值对对象
String key = me.getKey();
String value = me.getValue();
System.out.println(key + "---" + value);
}
2、HashMap
① 基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。
② 哈希表的作用是用来保证键的唯一性的。
③ HashMap的key则需要通过覆写hashCode方法和equals方法来确保没有重复的key。
3、LinkedHashMap
① Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。
② 由哈希表保证键的唯一性。
③ 由链表保证键值的有序(存储和取出的顺序一致)。// 创建集合对象
LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
// 创建并添加元素
hm.put("2345", "hello");
hm.put("1234", "world");
hm.put("3456", "java");
hm.put("1234", "javaee");
// 遍历
Set<String> set = hm.keySet();
for (String key : set) {
String value = hm.get(key);
System.out.println(key + "---" + value);
}
4、TreeMap
① 一个有序的key-value集合,基于红黑树的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。
② TreeMap是根据key进行排序的,它的排序和定位需要依赖比较器或覆写Comparable接口。
③ TreeMap的查询、插入、删除效率均没有HashMap高,一般只有要对key排序时才使用TreeMap。
④ TreeMap的key不能为null,而HashMap的key可以为null。 |