MAP集合----Java
public interface Map<K ,V>
将键映射到值,一个映射不能包含重复的键,每个键最多只能映射到一个值
相当于键值对
有Key就对应着一个value
- 键唯一(值可以重复)
- 键和值一一映射
- 靠键维护键值对关系
Map集合特点:
1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
3.Map集合中的元素,key是不允许重复,value是可以重复的
4.Map集合中的元素,key和value是一一对应的
Map集合的常用实现类
HashMap集合
基于哈希表的Map接口实现
哈希表的特点:查询速度快(1.8之前是数组+链表结构1.8之后是数组+单向链表/红黑树(链表的长度超过8))提高查询速度
无序集合:存储元素和取出元素的顺序有可能不一致;
实现是不同步的==**多线程(**速度快)
HashMap 有一个子类linkedHashMap:
linkedHashMap是Map接口的哈希表+链表实现(保证迭代顺序)
链表:保证元素有序 ,存储元素和取出元素的顺序是一致的,
所以–具有可预知的迭代顺序( HashMap 和linkedHashMap区别)`
Map接口中的常用方法
public V put(K key,V value); 把指定的键与指定的值添加到Map集合中
public V remove(Object key);把指定的键 所对应的键值对元素在Map集合中删除,返回被删除元素的值。
public V get(Object key);根据指定的值,在Map中获取对应的值
boolean containsKey();判断集合中是否包含指定的值。
public Set keySet();获取集合中所有的键,存储到Set集合中
public Set<Map.Entry<K,v>> entrySet() : 获取到Map集合中所有键值对对象的集合(Set集合)
public class Test(){
public static void main(String[] args){
/*public V put(K key,V value); 把指定的键与指定的值添加到Map集中
返回值是:
存储键值对的时候不重复,返回v是null
存储键值对的时候,key重复,会使用新的value,返回被替换的value值
*/
}
public static void show(){
//创建Map集合,多态
Map<String,String> map=new HasheMap<>();
String v1=map.put("李晨","范冰冰1");
System.out.println(v1);//v1 null
String v2=map.put("李晨","范冰冰2");
System.out.println(v2);//v2 范冰冰1
System.out.println(map)//{李晨,范冰冰2}
}
}