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键.
- Map 集合
- Map集合
- Map集合
- map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- Map集合
- 趣学算法系列-动态规划
- 设计模式笔记(六)设计六大原则之六--开闭原则
- IOS---Runtime 之理解
- 【Scikit-Learn 中文文档】线性和二次判别分析
- HDU 4907
- Map集合
- 动态顺序栈的实现
- Ubuntu14.04更换cudnn版本
- 事件监听
- mariadb
- 关于Github的那点事儿
- android webview 加载https
- 临界资源、临界区、信号量、P,V操作
- 小感想 | 面向对象和非面向对象程序的区别是什么?