Map集合

来源:互联网 发布:网站性能优化方案 编辑:程序博客网 时间:2024/06/08 04:42

Map集合

Map集合,是一种双列集合,提供的是key到value的一一映射,只针对键(key)有效.

 

Map集合和Collection集合的区别:

Collection<E>集合是一种单列集合

                  添加功能:add(Object e);

Map<K,V>集合是一种双列集合

                   添加键值对元素:put(Kkey, V value);

                            put方法的特点:

如果是第一次添加键值,则返回值为null,如果不是第一次添加的这个键,那么第二次添加的键对应的值会覆盖第一次的键对应的值,返回第一次键对应的   值.

Map接口的实现类

         HashMap:底层数据机构是哈希表,特点:元素唯一,无序.元素唯一是靠元素重写equals方法和hashCode方法保证的.允许插入null键.

                   LinkedHashMap:底层数据结构:是链表和哈希表,元素有序且唯一,有序靠链表保证,唯一靠哈希表保证,前提是元素重写equals方法和hashCode方法(有序是指存的顺序跟取得顺序一致)

         TreeMap:数据结构是红黑树特点:元素唯一,而且还能对元素进行排序 :自然排序和比较器排序. 排序的元素必须实现Comparable接口重写 CmcompareTo(T).不允许插入null键.

         HashMap<String,String>

         HashMap<Student,String>

         HashMap<String,Student>

集合的嵌套:

         HashMap<HashMap<K,V>,String>

         ArrayList<HashMap<K,V>>

单列集合和双列集合遍历元素的区别:

         单列集合:ArrayList<Integer>------>增强for(数据类型 变量名数组对象或者集合对象名){…}

         双列集合的遍历:

                   (1)Set<E> keyset = 集合对象.keySet();

                            For(Ee : 对象名){

                                     通过键获取值

}

                   (2)EntrySet<K,V> 获取键值对对象

Map接口中的常用方法:

         1)put(K key,V value):向集合中添加指定的key于value的映射关系.

         2)void clear(): 移除所有的键值对元素.

           V remove(Object key): 根据键删除键值对元素,并把值返回.

         3)boolean containsKey(Object key): 判断集合中是否包含指定的键.

         4)Boolean containsValue(Object value): 判断集合中是否包含指定的值.

           boolean isEmpty() : 判断集合是否为空.

 

         5)Set<Map.Entry<K,V>> entrySet() : 返回一个键值对的Set集合.

           V get(Object key) : 根据键获取值.

           Set<K> keyset() : 获取集合中所有键的集合.

           Collection<V> : 获取集合中所有值的集合.

         6)int size () : 返回集合中的键值对的对数

Collections: 针对集合操作的工具类

         Collections成员方法:

         publicstatic <T> void sort(List<T> list): 排序,默认按照自然顺序

                    public static <T> intbinarySearch(List<?> list,T key): 二分查找

                    public static <T> Tmax(Collection<?> coll): 获取最大值

                    public static void reverse(List<?>list): 反转

                    public static void shuffle(List<?>list): 随机置换

 

面试题

StringBuffer和Stringbuilder的区别:

         StringBuffer:线程安全,效率低.

         StringBuilder:线程不安全,效率高.

HashMap和Hashtable的区别:

         HashMap:线程不安全,效率高.允许null值和null键.

         Hashtable:线程安全,效率低.不允许null值和null键.

 

 

原创粉丝点击