`
mncc
  • 浏览: 52941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

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)来防止重复。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics