常用集合总结

集合如图所示:转自 https://blog.youkuaiyun.com/u010887744/article/details/50575735

简单结构图:

  • 每个ArrayList实例都有一个容量 。 容量是用于存储列表中的元素的数组的大小。 它总是至少与列表大小一样大。 当元素添加到ArrayList时,其容量会自动增长,即成倍扩容后,扩容后的大小= 原始大小+原始大小/2,调用底部方法在copy.二该方法使用的是system.array.copy(),该方法为原子级方法,效率较高。LinkedList为双向链表,无扩容机制,插入,删除效率高。

  •  线程同步写法: List list = Collections.synchronizedList(new ArrayList(...));

详细类图可以参考菜鸟教程  https://www.runoob.com/java/java-collections.html

实际使用中会多用到集合的转换,所以常用集合转换总结如下,很多参考了网络示例:

数组转集合:

String[] arr = {"a","b","c"}  List<String> list = Arrays.asList(arr); 

集合转数组:

  Object[] array = list.toArray();  Set set = new HashSet(Arrays.asList(array));

特别的,泛型集合转换: List<WeekEnum> list = Arrays.asList( WeekEnum.values() ) );

Map类集合除Hashtable外都是非线程安全的,如果想同步的话,根据API1.8描述,可以通过

  •  Map m = Collections.synchronizedMap(new HashMap(...));类似方法来达到同步。 

Map底层的存储原理为hash算法,以HashMap为例, 初始容量16和默认负载因子(0.75),简单来说就是当map容量达到初始容量乘以负载因子时,map就会rehash为原初始容量的2倍。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值