Java集合类之List,Set探究

Collection是一个顶层的接口,在集合类中还有Map也属于顶层接口(参考Java集合类之Map探究),本文通过一张类图描述List和Set的基本结构。



类图解析:

Collection是一个顶层的接口,定义了一系列方法,List和Set是继承自Collection的接口。

每个Collection都可以产生一个Iterator(参考Java iterator与iterator模式),从而可以利用Iterator进行遍历。

AbstractCollection是Collection的抽象实现,所有的实现类都继承自AbstractCollection。

AbstractList继承自AbstractCollection,且实现了List接口,所有的List实现类都继承自AbstractList。

ArrayList 和 LinkedList都继承自AbstractList,而且LinkedList实现了Queue接口,因此LinkedList可以当队列使用。Vector是一个同步的List,由于synchronized代价较大,已经不推荐使用。

ArrayList和LinkedList对比:

ArrayList内部由array实现,因此访问速度较快,而且随着size增加时,访问速度不会受到太大影响;但是当增加或删除元素时,由于需要对元素进行移动甚至新建一个array重新copy(参考),因此代价较大。

LinkedList内部由链表实现,当size增加时,访问速度明显受到影响;但是增加删除元素时,代价较小。

 

AbstractSet继承自AbstractCollection,且实现了Set接口,所有的Set实现类都继承自AbstractSet。

Java Set的设计和Map相似,可以参考Java集合类之Map探究

Hashset 作为通用Set使用

LinkedHashSet与Map(参考java集合类之Map探究)有通用的方面,按照插入顺序进行保存数据。

TreeSet实现了SortedSet接口,是一个有序的Set。

Vector,Stack已经不推荐使用

另外,Collections是一个工具类,包含大量对Collection类的操作,这里不做太多描述

 

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值