对集合的粗浅认识和各个集合的大致区别



  

java.util中的集合类中最常用的集合类是Set, List和Map。
Set
它包括TreeSet,HashSet
Set存储
Set里的存储的元素是无序的,相当于一个池,用来存放所有东西,但是没有任何顺序。
TreeSet是有顺序的按照树的形式来存储的。
HashSet为无序存储,但在保存字符串时速度快。
Set的添加
Set里面不允许重复元素。当我们向里面添加某一元素时,会自动调用equal方法,当元素无自己的equal方法则调用Object默认的equal方法来检查Set集里是否已包含相同元素,如果存在相同的元素无法添加。
List
List具体包括ArrayList,LinkList,Vector.
List的存储:
ArrayList是可变大小的动态数组,可动态的添加和删除元素。按照数组的方式有序存储。
LinkList是以链表的方式存储,各元素间按照一定的算法而链接起来。
Vector存储方式基本上与ArrayList一致。
读取数据:ArryList效率最高,它是按照数组索引直接存储与读取,而LinkList则是从索引为0开始按照元素间的某种关系一个一个查找而读取。
存储数据:每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小.它总是至少等于列表的大小.在实例一个ArryList时默认的数组大小为16,随着向 ArrayList 中不断添加元素,
当存储时超过了数组大小时,ArrayList需要扩容来添加此数据,这需要分摊一定的时间,此时选用LinkList效率高。
删除数据:LinkList效率最高,LinkList是以链表形式连接各元素,当删除某一元素并不影响其他元素。而ArrayList在删除某元素时,其后的元素都将自动往上移一个同时调整列表,这就在一定程度上降低了效率。
插入数据:LinkList效率高,当插入某以元素时,ArrayList在插入点后的元素都将向后移一个来调整列表,从而分摊时间。
多线程: Vector安全性最高
         ArrayList ,LinkedList没有同步方法。使用时得考虑起安全性,如果多个线程同时访问一个List,则必须自己实现访问同步。则需要调用Collections.synchronizedList方法构造一个同步:这将减低效率,而Vector本身具有同步,在多线程时无须考虑其安全性。 
Map
Map包括TreeMap,HashMap;
TreeMap
按照数的形式有序存储。
HsahMap相当于一个无序的能容纳大量无固定状态元素的容器。按照键值对的方式存储。不允许key的重复,可以有相同的value,当元素有相同的key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值