归纳总结在这:https://blog.csdn.net/u014044812/article/details/48325307
collection不能直接继承,只能通过继承它的子接口set List;
如何遍历collection集合的元素?
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
set接口是无序的,但元素不可重复;
hashset的底层就是hashmap,但是改写了put方法(变成了add方法):就算是equal和hashcode都相同,也不会更改原来的存进去的数据,从而实现了hashset中无重复元素;
List接口是有序的,但元素能重复;
Map就是依靠名-值;
ArrayList和Vector都是采用数组来储存数据,都是采用下标查询数据,都不便于插入和删除数据(要前移和后移其他数据);Vector采用了synchronize(多线程情况下,会等前一个线程执行完毕在执行下一个线程),使得它比ArrayList效率更低;
LinkedList:底层是双向链表,遍历数据只能从头或者尾开始查询,非常不便;插入数据和删除数据不需要移动其他数据;
若想线程安全的用ArrayList的话可以用 copyonrightArrayList: