java数据结构汇总1
来源:互联网 发布:word for mac 破解版 编辑:程序博客网 时间:2024/06/05 10:41
import java.util.Hashtable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
今天看了java系统提供的一些基本的集合,这里汇总一下,算是学习的一个总结。
他们所有的集合基本都是基于 collection接口 和 Map 接口
Collection
1.list (ArrayList ,LinkedList(频繁插入删除的时候用),Vector(线程安全),Stack(先进后出))
2.set (HashSet(无序,根据哈希值查找Entry),TreeSet(需要排序的时候用),LinkedHashSet(有序&&有序迭代的时候用) )
Map
1.TreeMap(需要排序的时候用)
2.HashMap(无序,根据key的哈希值查找Entry,concurrentHashMap(线程安全)),LinkedHashMap(有序&&有序迭代的时候用),HashTable(线程安全)
然后我们对具体的每个集合做一个简单的分析
ArrayList:数组集合,无容量限制,非线程安全
LinkedList:基于双向列表的机制,插入创建一个Entry对象,并切换前后元素引用,非线程安全
相对于ArrayList,其优势:add,remove较快,因为只需要操作前后元素,而ArrayList需要操作整个列表
get,set较慢以为ArrayList是有序的,LinkedList需要整个遍历
Vector:同ArrayList类似,最大区别是线程安全,还有自动扩充机制为2倍(ArrayList1.5倍)
Stack:继承自Vector,压栈,后进先出(push,pop。peek)
所有HashSet都是在加入的时候,先从对象中hashcode一个值,然后通过这个值加入到Set中
HashSet:基于HashMap实现,非线程安全,能存一个null(哈希表通过使用散列表的形式来存贮信息,集合内元素没有特定顺序,且随时会变)
TreeSet:(SortedSet)基于TreeMap实现 ,key需要实现comparator,实现排序
相对于HashSet:支持排序
LinkedHashSet:根据哈希值来判断元素存贮的位置,同时使用链表来维护元素之前的顺序,所以他是有序的
优势:迭代速度比HashSet好,插入删除查(因为需要维护前后元素的关系)
HashMap:根据数组的中hash码,查找Entry在另外一个数组中的位置,遍历用iterator
HashTable:线程安全,不允许null,便利用enumeration
TreeMap:能排序的map
LinkedHashMap:相对于HashMap,插入的时候有序,所以排序的时候
- java数据结构汇总1
- java基本数据结构汇总
- 面试题目汇总(JAVA算法/数据结构)
- 数据结构汇总
- 数据结构算法设计题汇总(1)
- 数据结构与算法汇总
- 数据结构排序算法汇总
- 数据结构笔试题目汇总
- 数据结构--排序算法汇总
- 数据结构问题汇总
- 数据结构与算法汇总
- 数据结构与算法汇总
- [汇总] 数据结构与算法
- 常用数据结构汇总
- 数据结构问题汇总
- PE文件数据结构汇总
- 数据结构的排序汇总
- 数据结构树汇总
- 定时关机 批处理
- OAUTH认证授权原理
- 回调 类和方法的常用修饰符
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
- [高斯消元 线性基 贪心 拟阵] BZOJ 2460 [BeiJing2011]元素
- java数据结构汇总1
- mysql 初级操作-查询数据库时间
- (浅谈)APP内EditText常见Pattern用法
- 如何定位Google Play Store无法连接问题
- Android versionCode与versionName
- 面试题(有部分答案)
- SQL Server 2008索引使用技巧
- 掩码
- 判断手机app是否允许定位