Map接口,底层哈希表实现,无序,保证键的唯一性需要重写hashCode()和equals()方法
方法
添加,修改
V put(K key, V value) // 添加成功返回空,键重复时,修改值,返回修改之前的值
V replace(K key, V value) // 有此键时,修改值,返回之前的值;无此键返回null
void putAll(Map<? extends K, ? extends V> m) // 对每一个m中的元素进行put操作
获取
V get(K key) // 通过键得到值,若无此键,返回null
Collection<V> values() // 返回所有的值
删除
v remove(K key) // 返回删除之前的值,若无此键,返回null
boolean remove(K key, V value) // 删除对应的键值对,必须完全相同,返回true
遍历
Set keySet() // 把key装进Set集合,然后进行遍历,Map不能直接遍历
Map<Integer, String> m = new HashMap<>(); m.put(1, "qian"); m.put(2, "sun"); m.put(3, "li"); m.put(4, "zhou"); Set<Integer> keySet = m.keySet(); for(Integer i: keySet) { String s = m.get(i); System.out.println(s); } System.out.println("######################"); Iterator<Integer> it = keySet.iterator(); while(it.hasNext()) { String s = m.get(it.next()); System.out.println(s); } System.out.println("######################"); keySet.forEach(e->{ System.out.println(m.get(e)); }); System.out.println("######################"); keySet.forEach(new Consumer<Integer>() { @Override public void accept(Integer t) { System.out.println(m.get(t)); } });
Set entrySet() // 把entry对象放进集合,entry对象就是键值对,通过entry对象的getKey(),getValue()方法得到相应内容
Set<Entry<Integer, String>> s = m.entrySet(); for(Entry<Integer, String> e:s) { System.out.print(e.getKey()); System.out.println(e.getValue()); }
void forEach(BiConsumer<? super K, ? super V> action)
m.forEach((key, value)->{ System.out.println("{" + key + ":" + value + "}"); });
判断是否存在元素
boolean containsKey(Object key)
boolean containsValue(Object value)
清空
clear()
实现类HashMap与Map接口方法一致,LinkedHashMap有序
Map<Integer, String> m = new LinkedHashMap<>(); m.put(1, "qian"); m.put(2, "sun"); m.put(3, "li"); m.put(4, "zhou"); m.forEach((key, value)->{ System.out.println("{" + key + ":" + value + "}"); }); // 输出 {1:qian} {2:sun} {3:li} {4:zhou}