集合框架—map集合
1.list去重问题
1.list去重的问题:
ArrayList 数组
依赖于contains,对象的去重是依赖于equals
set的去重
HashSet 哈希表
HashSet沿用了set的特点,本身是不能存放重复元素
调用add方法的时候,就在自动调用hashCode、equals
treeset
自然排序 赋予将要添加的元素比较性
比较器排序 让容器具有比较性
二叉树
常用的算法
冒泡排序、选择排序、二分搜索法、希尔排序
2、集合框架Map介绍
map集合中存放的都是一组组映射关系 key=value
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 (key=value)
此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。
常见的方法有:
探究put/entrySet(性能优)/keySet
put :
1.添加集合元素的同事,它可以编辑所有元素
如果说集合中没有key对应的value,那么就往集合中添加元素
如果说集合中对应的key有value值,则代表替换原有的值
2.放回替换前key对应的value值
entrySet :
由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系。
Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也就是一个Entry)
Map.Entry里面包含getKey()和getValue()方法
keySet :
通过entrySet,效率高,以后尽量使用这种方式
通过ketSet,效率低
Map集合和Collection集合的区别
(一)Map集合是有Key和Value的,Collection集合是只有Value。
(二)Collection集合底层也是有Key和Value,只是隐藏起来。
(三)Map特点:元素按键值对存储,无放入顺序
(四)Map不是Collection的接口
(五)Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
(六)map集合中的泛型要使用包装类,或者是引用数据类型
TreeMap
它的使用方法和我的上一篇set篇里的TreeSet一样,详情请看我的上一篇
HashMap
map集合中的泛型要使用包装类,或者是引用数据类型
统计、排序
统计功能 :
小结:
map
Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合石线程同步的,jdk1.0,效率低
HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。将Hashtable替代;jdk1.2,效率高
TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序