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

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

你可能感兴趣的:(面试)