Java Collection集合小结

Java Collection集合小结

Collection集合
只能存储引用类型的数据, 单个存储
尽管有时我们看到存储基本数据类型的数据,但实际存储的依旧是引用类型的数据,因为基本类型的数据已经被java的自动装箱机制转换为引用数据类型的数据了。
基本操作: add(), remove(), contains(), size(), iterator()
是size()不是length();

List集合

特点: 存储的元素是有序,可重复的
有序指的是添加元素的顺序和存储元素的顺序是相同的;
为每个元素指定一个索引值
增加的方法, 针对索引值的操作, listIterator(), subList(), sort(Comparator)

ArrayList集合

底层是数组, 访问快, 添加/删除效率低
访问之所以快是因为数组中存储的数据类型是惟一的,并且知道数组的首元素地址,我们可以通过公式计算出要访问的元素的内存地址,从而提高了效率,无需遍历。
添加删除之所以效率低是因为数组中的元素需要进行大量的移动,如果是在数组的末尾添加或者删除元素效率并不低。
初始化容量: 10, 扩容: 1.5倍

Vector集合

底层是数组, 它是线程安全的, ArrayList不是线程安全的
初始化容量: 10, 扩容: 2倍

LinkedList集合

底层是双向链表, 添加/删除效率高, 访问慢
之所以访问比较慢是因为每次访问都需要遍历整个双向链表

List集合应用场景

ArrayList适用于以访问为主, 很少添加/删除的情况
LinkedList适用于经常添加/删除的情况

Set集合

特点: 数据无序,不可重复

HashSet集合

底层是HashMap, HashSet实际上就是HashMap键的集合

TreeSet集合

底层是TreeMap, TreeSet实际上就是TreeMap键的集合
TreeSet实现了SortedSet接口, 可以对元素自然排序, 要求元素必须是可比较的:

● 在构造方法中指定Comparator比较器对象

● 如果没有Comparator比较器, 集合元素的类必须实现Comparable接口

Set集合的应用场景

如果不需要对Set集合进行排序就选择HashSet
如果需要对Set集合的元素进行排序就选择TreeSet

注意:

List集合/HashSet集合的contains( e ) / remove( e )等方法需要调用对象的equals()方法, 这些集合中的元素的类需要重写equals()方法
TreeSet集合中contains( e )/ remove( e) 等方法判断是否同一个对象是根据Comparator/Comparable的比较结果是否为0来判断的, 如果比较结果为0表示同一个元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值