Map集合的特点
Map集合时双列的,它有两个参数,一个是键key,一个是值value。存在映射关系,由一个键可以映射一个值,也就是一个键可以得到一个值。每个键最多只能映射一个值。
Map集合和Collection集合的区别:
- Map集合时双列的,Collection是单列的
- Map集合的键是唯一的,Collection中的Set接口的元素时唯一的
- Map集合的数据结构只对键有效,跟值无关系。Collection集合的数据结构只跟元素有效
Map集合的方法
- V put(K key,V value)
添加元素 - void clear()
清空元素 - V remove(Object key)
删除指定键的元素 - boolean containsKey(Object key)
判断指定键是否含有 - boolean containsValue(Object value)
判断指定值是否含有 - boolean isEmpty()
判断是否为空集合 - Set<Map.Entry<K,V>> entrySet()
获取元素是键值对的Set集合 - V get(Object key)
获取指定键映射的值 - Set keySet()
获取元素是键的Set元素 - Collection values()
获取集合中所有值的Collection集合 - int size()
返回集合中键值对的对数
V put(K key,V value)方法不只是可以添加元素,也可以对值进行替换。如果添加的元素的键在集合中已经存在,那么新添加的元素的值会覆盖原有这个元素的值。
例如:
hashMap.put(1,"aaa");
hashMap.put(1,"bbb");
此时键是1的元素的值会被替换为bbb。
遍历Map集合的方法
第一种:通过Set keySet() 方法,得到一个元素全是键的集合。然后遍历这个集合,通过get()方法,来获取键所对应的值
import java.util.HashMap;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1,"aaa");
hashMap.put(2,"bbb");
hashMap.put(3,"ccc");
hashMap.put(4,"ddd");
hashMap.put(5,"eee");
Set<Integer> set = hashMap.keySet();
for (Integer integer : set) {
String s = hashMap.get(integer);
System.out.println(integer+"==="+s);
}
}
}
第二种:通过Set<Map.Entry<K,V>> entrySet()方法,得到元素是键值对Set集合,遍历这个Set集合,通过getkey()和getvalue()方法,获取键和值。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1,"aaa");
hashMap.put(2,"bbb");
hashMap.put(3,"ccc");
hashMap.put(4,"ddd");
hashMap.put(5,"eee");
Set<Map.Entry<Integer, String>> entries = hashMap.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"==="+value);
}
}
}
HashMap和Hashtable的区别
HashMap:线程不安全,效率高,允许null值和null键
Hashtable:线程安全,效率低,不允许null值和null键
LinkedHashMap集合
概述:
Map接口的哈希表和链接列表的实现,具有可预知的迭代顺序
特点:
底层的数据结构是链表是哈希表,元素有序,并且唯一
元素的有序性由链表数据结构保证,元素的唯一性由哈希表数据结构保证
Map集合的数据结构只和键有关。
TreeMap集合
TreeMap键的数据结构是红黑树,可以保证键的唯一性和排序。
排序和TreeSet一样,分为自然排序和比较器排序
线程不安全但效率高。
Collections类
Collection类是针对集合元素进行操作的工具类,里面存放的是对元素操作的方法
方法:
- public static void sort(List list)
对集合中的元素进行排序,默认为自然排序 - public static int binarySearch(List<?> list,T key)
查找元素 - public static T max(Collection<?> coll)
获取集合中的最大值 - public static void reverse(List<?> list)
将集合中的元素反转 - public static void shuffle(List<?> list)
将集合中的元素随机置换位置