最近碰到的面试:集合(一)

1、Collection和Collections
    Collection是一个接口,它提供了集合类的通用方法如size()、isEmpty()、toArray()、add(E)之类的方法
    Collections是一个集合包装类,提供了一系列有关聚合的静态(static)方法,此方法不能new(因为构造方法是priate的)。


2、ArrayList和LinkedList区别
    ArrayList继承了RandomAccess,而LinkedList则是继承的SequenceAccess,RandomAccess和SequenceAccess接口下都没有内容,只是用来标记说明一个是支持随机访问,一个是顺序访问的。
    ArrayList内部实现是一个数组Object[] elementData,LinkedLIst则是一个队列。
    所以,在add和remove中,LinkedList要比ArrayList要快,但是在get的时候,ArrayList要比LinkedList快得多,因为LinkedList是要遍历整个链表的。
    两个都不是线程安全的。
    ArrayList的线程安全可以考虑CopyOnWriteArrayList(但是这个是锁住所有数据的private transient volatile Object[] array)


3、Set为啥是不会重复的
    Set的实现(如HashSet),内部实际上是放置了一个HashMap<E,Object> map;然后add(e)的时候实际上是用了map.put(e, dummyObjs)来防止重复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值