Java语言tips 1

本文深入探讨Java集合框架的各种数据结构,包括数组、对象、Set、Map、List等,并对比它们的特点与应用场景。介绍不同集合类如HashSet、TreeSet、HashMap、TreeMap等的工作原理及性能特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组是最快的,对象不需要cast,可以存主类型。

Set持有的个个不同,不能保存重复元素;加入SetObject必须定义equals;不保证用何顺序存储元素。

Map是关联性数组,能在两个对象间建立联系;以key-value出现,可返回key值的Collection;能扩展为多维。提供的不是对象和数组的关联,而是对象和对象的关联。

除数组,其他可自动调整大小。

Collection:一组有一定规律的独立元素。

List:按照特定顺序持有这些元素,既不排序也不编辑。在Collection基础上添加大量方法,能在序列中插入和删除元素。可以通过ListItertor遍历。和数组一样,也把数字下标同对象联系起来。对象需要cast

LinkedHashSet:在内部使用链表的Set,有HseSet的查询速度。保存插入顺序。用Iterator便历十,按插入顺序访问。

LinkedHashMap:如HashMap,用Iterator便历,按插入顺序或最先使用的顺序访问。其他情况比HashMap稍慢,在Iterator会更快。可用LRU算法为它重新排序。

ArrayList:用数组实现的List,能快速随机访问,但插入和删除元素时较慢。ListIterator可以双向遍历,不能插入和删除元素,用ListIterator开销比LinkedList高。

LinkedList:对顺序访问优化,插入和删除元素代价不高。随即访问速度相对较慢。有addFisrt等方法。可当成stcke,queque或双向对列(deque)。提供队列,双向队列和栈的功能。

HashSet:为优化查询速度而设计的Set,放入的Object得定义hashCode()

TreeSet:有序的Set,底层是棵树,可以提取有序序列。

SortedSet:元素是有序的,只有TreeSet一个实现。

HashMap:基于hash表实现,提供时间恒定的插入与查询。看中的是访问速度。

TreeMap:红黑树数据结构的实现。按顺序排列。得到有序的Map。看中的键的顺序,不如HashMap快。

WeekHashMap:能让Map释放其所持有的对象,如除在map当中有键,其他地方无其reference,将被当作垃圾回收。

IdentityHashMap:用==来比较的hash map,为解决特殊问题设计的。

Priorityqueue

如果不写hashCode()equalshash数据结构(HashSetHasMapLinkedHashSetLinkedHashMap都无法正确处理键)

 

VecotrEnumerationJava 1的,缺点很多。

HashtableHasMap基本相同。

Stack也是java 1的方法,继承了Vector

BitSet:高效存储许多方面(on-off)信心。高效是对容量而言,primitive的数组比较快。

 

Equals()必须做到:

1.       反身性:对任何xx.equals(x)必须是true

2.       对称性:对任何xy,如果y.equals(x)true,则x.equals(y)也必须是true

3.       传递性:对任何x,y,z,如果x.equals(y)ture,y.equals(z)ture,x.queals(z)也必须是true

4.       一致性:对任何xy,如果对象里面用来判断相当性的信息没有修改过,则无论调用多少次x.equals(y),它都必须一致地返回truefalse

5.       对于任何非空的x,x.equals(null)必须返回false

6.        

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值