集合类(数据结构图、集合图、集合之间的比较)
2011-05-17 14:54
316 查看
数据结构图
集合类图
.容器中装的都是对象,因为它要把对象放到堆上面,但是1.5后就可以自动包装
map.put("one",new Integer(1))
1.5后可以 map.put("one",1);
List
有序的、可重复的、按索引位置排序 (这点类似于数组)
实现类
ArrayList 数组实现
1. 代表长度可变的数组
2. 允许对元素进行快速的随机访问(根据索引进行访问)
3. 向ArrayList中插入和删除元素的速度较慢,需要移动大量的元素
LinkedList 双向链表实现
1. 插入和删除元素的速度较快(不需要移动元素)
2. 随机访问的速度相对较慢,随机访问的含义是根据索引定位特定位置的元素
3. 提供addFirst(0 addLast() getFirst() get拉斯特() removeFirst()和removeLast()方法,使LinkedList可以作为堆栈,队列和双向队列使用
Set
无序的、不可重复的、
实现类
HashSet 哈希算法实现、底层是HashMap实现,用到了key的部分。
1. 按照哈希算法存取集合中的对象,具有很好的存取和查找性能
2. 当向集合中加入一个对象时,Hashset会调用对象的hashCode()方法获得哈希码,然后根据哈希码进一步计算对象在集合中的存放位置
3. 在java.lang.Object中定义了hashCode()和equals()方法,在最原始的Object中定义的equals()方法是按照内存地址比较对象是否相等,因此对于Object而言,如果equals方法的结果为true,则说明两个引用实际上引用相同的对象,这两个引用的哈希码必然也相同
为保证HashSet能够正常工作,要求两个对象用equals()方法比较的结果为true时,他们的哈希码也相同
如果用户定义的类覆盖了Object的equals方法而没有覆盖hashCode方法,会导致当equals方法结果为true时,对象的哈希码并不相同,这样会使hashSet无法正常工作,用户本意是作为同一个对象引用处理,但是由于没有覆盖hashCode()方法,导致哈希码不同,hashSet将作为不同对象处理。
SortedSet
排序的set
实现类
TreeSet,在HashSet的基础上维护了一个双向链表,
1. 排序的依据对象实现实现了Comparable接口,或者是构造时传入Comparator比较器。像Integer,Double和String他们自己都实现了Compareble接口
Map
Key 唯一的,key不可重复的。Value可重复。
实现类
HashMap
SortedMap
TreeSet基于TreeMap实现,支持排序
TreeSet是非线程安全的
集合类图
.容器中装的都是对象,因为它要把对象放到堆上面,但是1.5后就可以自动包装
map.put("one",new Integer(1))
1.5后可以 map.put("one",1);
List
有序的、可重复的、按索引位置排序 (这点类似于数组)
实现类
ArrayList 数组实现
1. 代表长度可变的数组
2. 允许对元素进行快速的随机访问(根据索引进行访问)
3. 向ArrayList中插入和删除元素的速度较慢,需要移动大量的元素
LinkedList 双向链表实现
1. 插入和删除元素的速度较快(不需要移动元素)
2. 随机访问的速度相对较慢,随机访问的含义是根据索引定位特定位置的元素
3. 提供addFirst(0 addLast() getFirst() get拉斯特() removeFirst()和removeLast()方法,使LinkedList可以作为堆栈,队列和双向队列使用
Set
无序的、不可重复的、
实现类
HashSet 哈希算法实现、底层是HashMap实现,用到了key的部分。
1. 按照哈希算法存取集合中的对象,具有很好的存取和查找性能
2. 当向集合中加入一个对象时,Hashset会调用对象的hashCode()方法获得哈希码,然后根据哈希码进一步计算对象在集合中的存放位置
3. 在java.lang.Object中定义了hashCode()和equals()方法,在最原始的Object中定义的equals()方法是按照内存地址比较对象是否相等,因此对于Object而言,如果equals方法的结果为true,则说明两个引用实际上引用相同的对象,这两个引用的哈希码必然也相同
为保证HashSet能够正常工作,要求两个对象用equals()方法比较的结果为true时,他们的哈希码也相同
如果用户定义的类覆盖了Object的equals方法而没有覆盖hashCode方法,会导致当equals方法结果为true时,对象的哈希码并不相同,这样会使hashSet无法正常工作,用户本意是作为同一个对象引用处理,但是由于没有覆盖hashCode()方法,导致哈希码不同,hashSet将作为不同对象处理。
SortedSet
排序的set
实现类
TreeSet,在HashSet的基础上维护了一个双向链表,
1. 排序的依据对象实现实现了Comparable接口,或者是构造时传入Comparator比较器。像Integer,Double和String他们自己都实现了Compareble接口
Map
Key 唯一的,key不可重复的。Value可重复。
实现类
HashMap
SortedMap
TreeSet基于TreeMap实现,支持排序
TreeSet是非线程安全的
相关文章推荐
- 集合类(数据结构图、集合图、集合之间的比较)
- oracle中比较两表表结构差异和数据差异的方法
- 数据结构(14)——插入排序、交换排序、选择排序、归并排序和基数排序算法的比较
- 数据库-Oracle【Oracle 三种集合数据类型的比较 】
- 十六,数据结构,集合
- String字符串之间的比较与其他数据类型之间的比较区别
- 数据之间的处理(表,结构,指针啊)定义与相互之间的赋值(针对初学者容易混淆的概念)
- 转-oracle中比较两表表结构差异和数据差异的方法
- 比较两个DataTable数据(结构相同),返回新增的,删除的,修改前的,修改后的 DataTable
- 【计算机体系结构】效率--数据容灾的两个指标RPO与RTO之间的区别
- 数据结构课程设计:两顶点之间最短路径
- python 数据结构-集合set
- 【数据结构】顺序表、单链表的 比较+总结
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 不同数据结构的比较原理
- sqlserver数据库进行数据和结构比较和同步 Visual Studio2017 数据库架构比较
- Oracle三种集合数据类型的比较
- 数据结构:点对之间最短距离--Floyd算法
- 利用expdp 和impdp来 导出,导入 oracle 数据(含比较 两个schema的表结构)
- 二叉树(10)----比较两个二叉树是否相同(结构和数据),递归和非递归