容器 集合 数据结构

 

http://www.open-open.com/lib/view/open1474167415464.html

 

 

 

基本容器:

集合:

1.set:元素之间没有关系,确定性,不重复性,无序性。

 

线性结构:

1.线性表:一个元素接着一个元素,随意位置可以插入删除。

2.队:先进先出,只准在尾部插入,在头部读出。

3.栈:后进先出,只准在一端插入和删除。

 

树状结构:

1.树:子节点只有一个父节点,父节点可以有多个子节点。

2.二叉树:每个节点至多有两个子节点的树。

 

网状结构:

1.图:节点之间可以任意连接。

 

其他容器或复合容器:

hash表:利用hash函数根据值查找该值所在的地址(值和地址有一个函数关系,存储地址=f(元素值),例如:存储地址=元素值的平方),若值的地址冲突,可以用解决冲突的方法,例如:可以用链表的形式挂一个地址。

索引表:在一个有顺序的线性表上抽取一些值组成索引表(索引表的值也是有序的)方便查找。

Map:主要用来存键值对。键是一个列表来存储,对应值用另外一个列表来存。通过键的地址能找到值的地址。(例如:两个同样大小的数组,一个存键一个存值,键和值的下标相同)

 

容器的存储方式:

顺序存储:(地址空间连续)(读取指定位置的元素方便,插入和删除需要依次移动元素麻烦),

链式存储:(前个元素有指针指向下个元素)(读取指定位置的元素需要从头依次查找麻烦,插入和删除只需移动指针方便。)。

-------------------------------------------------------------------------------------------------------------------------------------

1.1

 1.2


 

 

1.集合set

HashSet:Hash表存储set,元素不能重复。

-------------------------------------------

TreeSet:元素是排序,默认是自然顺序。也可自己传Comparator

-------------------------------------------

LinkedHashSet:元素有插入的顺序。

------------------------------------------------------------------------------------

 

2.list,queue,stack(线性表,队,栈)

lis(线性表)t:

Arraylist:是线性存储,就是用数组实现的,它会动态增加他的50%容量。善于查找。

LinkedList:是链式存储,善于增加删除。使用时LIst list=new LinkedList();

--

vector:和ArrayList基本一样,它会动态增加他的翻倍容量,也可设置增长因子,只是它是线性安全的。

--

并发包的:

------------------------------------------------------------------------------------

queue(队):

LinkedList:它实现Queue接口。使用时:Queue queue = new LinkedList();

--

并发包的:

-------------------------------------------

PriorityQueue:带有先级的队列,每次从队列中取出的是具有最高优先权的元素。构造时需要传Comparator,如果没有数字默认是小的在队列头,字符串则按字典序排列。

------------------------------------------------------------------------------------

 栈:

--

stack:线性安全的栈。数组现实的。

------------------------------------------------------------------------------------

deque(双端队列):技能实现队的功能又能显示栈的功能。:

ArrayDeque:是线性存储,就是用数组实现的双端队列。

LinkedList:它实现Deque接口。使用时:Deque deque= new LinkedList();

--

并发包的: 

------------------------------------------------------------------------------------

 

3.map

HashMap:用哈希表的方法存储键值对。允许key为null

--

HashTable:和nashmap相似,只是它是线程安全的。不允许key为null

-------------------------------------------

TreeMap:是排序的容器,用iterator输出是排序好的,默认是按自然顺序,也可构造时传Comparator自定义顺序,键底层是二叉树数据结构。

-------------------------------------------

LinkedHashMap:能保持插入的顺序。在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。实体虽然是以Hash的顺序存放在Hash表中,但是实体之间却用链表的形式保持了存入的先后关系。

 

-------------------------------------------------------------------------------------------------------------------------------------

ComParable是比较接口compareTo(T another);是需要比较的类自身实现。类自身实现。

ComParator也是比较接口compare(T lhs, T rhs);是可以传一个类的两个实例进行比较。类外实现

Collections:集合类的,排序或其他功能工具。

Arrays:普通数组(int[] a)的,排序或其他功能的工具。

 

 

 

 

 

猜你喜欢

转载自jishudaren.iteye.com/blog/2304168