集合总结
Collection接口:存储一组[不唯一],[无序]的对象
List接口
1.List:接口
存放的是:[有序] [不唯一]的元素
遍历问题:for/for –each/Iterator
凡是能用迭代器接口遍历的集合都可以用增强for循环遍历
2.ArrayList与LinkedList区别
ArrayList:
遍历和查询元素效率比较高 添加和删除等操作频繁时性能低
LinkedList:
添加和删除效率高 查找效率较低
Set接口
1.Set接口
存放的是:[无序] [唯一]的元素
特 点:[无序] [唯一]
2.Set接口没有提供Collection接口以外的方法,但实现了Set集合中元素不可重复的特性
JDKAPI提供了Set接口的常用实现类
HashSet: 散列存储
TreeSet: 有序存储(自然顺序)
LinkedHashSet: 顺序 存储顺序
3.HashSet实现类
HashSet不保存元素的加入顺序
HashSet存 取 删效率很高
hashCode():计算哈希值,通过哈希值,找到存储的位置
equals() 比较数据是否重复,去除重复数据(重写两个方法,去除重复)
对于存放在HashSet中的对象 对应的类要重写 equals() 和 hashCode()方法
4.LinkedHashSet实现类
按照存储顺序遍历,面向接口编程
5.TreeSet实现类
遍历的时候按自然顺序排列的
特点:
TreeSet使用的是红黑树(二叉树)结构对加入的元素进行存储
所放入TreeSet中的元素必须是可排序的:
(1)内部比较器:自定义添加比较器,自定义实现java.lang.comparable接口来实
现int ComparatorTo<T o>方法,比较此对象与比较对象的顺序;
(2)匿名内部类:实例一个集合的时候() new Comparator<T o> 接口,实现 int compare(T
o1,T o2) 方法 比较用来排序的两个参数 ,用来制定比较规则;
(3)外部比较器: 定义一个类,实现比较方法; 自定义一个类,实现 Comparator<T o>
接口,实现 int compare(T o1,T o2) 方法比较用来排序的两个参数,制定比较规则.
Map接口
1.Map接口的特点:存储键值对的形式
添加方法 put(Object key,Object value)
Key[唯一,无序] Value[不唯一,无序]
其中键是[唯一]的,所以键的底层是Set形式进行存储的
2.HashMap实现类:
HashMap内部对“键”用Set进行散列存放。如果保证键唯一,则重写hashCode()和equals()方法
注意事项: 1.允许使用null作为键或值
2.键不允许添加重复值
3.键值对映射不允许添加重复数据
3.TreeMap实现类:
TreeMap内部使用红黑树结构对“key”进行排序存放,所以放入TreeMap中的“key-value”对
“key”必须是可“排序”的。
第一种方法:所有可“排序”的类都可以通过实现java.lang.Comparable接口来实现,重写方法
第二种方法(集合比较器):当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时
就需要让集合自身具备比较性