collection各实现类用途建议
Posted run127
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了collection各实现类用途建议相关的知识,希望对你有一定的参考价值。
Collection接口:集合,下面有两大分支,List和Set,期中List是有序队列,元素可以重复,Set是集合,元素不能重复。
AbstractCollection抽象类:实现了Collection大部分的接口。
AbstractList抽象类:继承了AbstractCollection抽象类。AbstractSet抽象类:同样继承了AbstractCollection抽象类。
List和Set实现类都分别继承了AbstractList和AbstractSet抽象类。
List类的实现类常用的是LikedList、ArrayList、Vector和Stack;
LinkedList:继承了AbstractSequence,是一个双向链表。可以当做堆栈、队列或者双向队列使用,支持序列化。
ArrayList:是一个数组队列,相当于动态数组,提供了添加、修改、删除和遍历功能,是非线程安全的。建议单线程使用ArrayList,多线程使用Vector或者CopyOnWriteArrayList。
Vector:是一个矢量队列,与ArrayList类似,但是属于线程安全的。
Stack:栈,先进后出,继承于Vector。
ArrayList和LinkedList区别
ArrayList可以看做数组,可以快速随机访问,插入对象的速度慢,整个数组要后移操作复杂。
LinkedList可以看做链表,插入删除数据相当快速方便,不能随机访问,只能遍历查找,随机读取速度慢。
Map接口:映射接口,Map中存储的内容是键值对(key—value)
Map接口的实现类:TreeMap、HashMap、WeakHashMap和HashTable
TreeMap:有序的键值对,通过红黑树实现的,可用于给Map集合中的键进行排序,非线程安全。
HashMap:是基于“拉链法”实现的散列表,键值对,但不保证次序,非线程安全。
Hashtable:是基于“拉链法”实现的散列表,线程安全
WeakHashMap:基于“拉链法”实现的散列表,弱键。当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是强键
Set接口的实现类有HashSet类和TreeSet类
HashSet类:依赖于HashMap实现,HashSet元素也是无序的。
TreeSet类:依赖于TreeMap实现,TreeSeet元素是有序的。
以上是关于collection各实现类用途建议的主要内容,如果未能解决你的问题,请参考以下文章
guava源码阅读——collect.ForwardingCollection类
CoreData:错误:无法在 NSManagedObject 类“Collect”上调用指定的初始化程序