1.Map是什么
1.一个接口类,一个没有继承自Collection的类.
2.该类存储的是<K,V>结构的键值对,且K一定是唯一的
3.实现该接口的有HashMap和TreeMap
4.Map作为一个接口不能直接实例化,只能通过实例化HashMap和TreeMap来实现
4. Map 中存放键值对的 Key 是唯一的, value是可以重复的5. 在 TreeMap 中插入键值对时, key 不能为空,否则就会抛 NullPointerException 异常 , value可以为空。但是HashMap 的 key 和 value都可以为空。6. Map 中的 Key 可以全部分离出来,存储到 Set 中 来进行访问 ( 因为 Key 不能重复 )。7. Map 中的 value 可以全部分离出来,存储在 Collection 的任何一个子集合中 (value 可能有重复 )。8. Map中键值对的 Key 不能直接修改, value 可以修改,如果要修改 key ,只能先将该 key删除掉,然后再来进行重新插入
2.HashMap
本质是一个数组,数组的每一个元素保留了一个链表的头节点,链表中存放着所以哈希值相同的键值对
方法:
put() 添加一个元素
get() 得到一个元素
remove() 删除一个元素
......
import java.util.HashMap;
import java.util.Map;
public class HashMap1 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
//插入元素
map.put(1,"apple");
map.put(2,"peach");
map.put(3,"banana");
//得到元素
String t = map.get(1);
System.out.println("拿到的元素为"+t);
//删除元素
map.remove(1);//apple被删除
//遍历元素
for (Map.Entry<Integer,String>entry:map.entrySet()){
String value = entry.getValue();
int key = entry.getKey();
System.out.println(key+","+value);
}
}
}
3.TreeMap
一种有序的键值对集合,基于红黑树实现,可以保障元素按照键的顺序或者自定义顺序进行排序.
方法:
put() 添加一个元素
get() 得到一个元素
remove() 删除一个元素
......
Map<String,Integer> treemap = new TreeMap<>();
//插入元素
treemap.put("apple",1);
treemap.put("banana",2);
treemap.put("peach",3);
//获取元素
int t1 = treemap.get("peach");
System.out.println("水果的序号为:"+t1);
//删除元素
treemap.remove("apple");
//遍历元素
for(Map.Entry<String,Integer>entry:treemap.entrySet()){
String key = entry.getKey();
int value = entry.getValue();
System.out.print(key+","+value+" ");
}