Map集合
- Map集合概述:存储键值对应关系的数据,也就是映射关系。
- Map集合特点:
(1) Map 集合中不能存在相同的键,一个键只能对应一个值,键相同值覆盖。
(2)Map 集合的数据结构 只跟键有关 ,跟值无关。
(3)基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。 - Map集合功能概述:
public class MyTest {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
String a1 = map.put(1, "小明");
String a2 = map.put(2, "小红");
String a3 = map.put(3, "小强");
String a4 = map.put(3, "小白");
String a5 = map.put(4, "小文");
String a6 = map.put(5, "小方");
System.out.println(map.toString());
map.remove(5);
boolean b1 = map.containsKey(8);
System.out.println(b1);
boolean b2 = map.containsValue("小文");
System.out.println(b2);
boolean empty = map.isEmpty();
System.out.println(empty);
System.out.println(map.size());
Collection<String> values = map.values();
for(String v:values){
System.out.print(v+" ");
}
Set<Integer> in = map.keySet();
for(Integer i:in){
String s = map.get(i);
System.out.println(i+"=="+s);
}
System.out.println("--------");
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for(Map.Entry<Integer, String> en : entries){
System.out.println(en.getKey()+"=="+en.getValue());
}
}
}
LinkedHashMap
- LinkedHashMap的概述:Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序
- LinkedHashMap的特点: 底层的数据结构是链表和哈希表,元素有序并且唯一。元素的有序性由链表数据结构保证唯一性由哈希表数据结构保证,Map集合的数据结构只和键有关。
public class MyTest3 {
public static void main(String[] args) {
LinkedHashMap<String, String> lkm = new LinkedHashMap<>();
lkm.put("小青","白娘子");
lkm.put("周杰伦","昆凌");
lkm.put("杨过","姑姑");
lkm.put("a","A");
lkm.put("b","B");
Set<String> keys = lkm.keySet();
for(String key:keys){
System.out.println(key+"====="+lkm.get(key));
}
}
}
TreeMap
- TreeMap:
(1) 键的数据结构是红黑树,可保证键的排序和唯一性
(2)排序分为自然排序和比较器排序
(3)线程是不安全的效率比较高
public class MyTest {
public static void main(String[] args) {
TreeMap<Integer, String> hm = new TreeMap<>();
hm.put(1,"张靓颖");
hm.put(3,"刘亦菲");
hm.put(6,"王祖贤");
hm.put(2,"章子怡");
hm.put(7,"杨颖");
hm.put(0,"杨幂");
hm.put(8,null);
Set<Integer> keys = hm.keySet();
for(Integer key:keys){
System.out.println(key+"==="+hm.get(key));
}
}
}