您好,欢迎访问一九零五行业门户网

java集合有哪些

java集合有哪些
java api中所用的集合类,都是实现了collection接口,他的一个类继承结构如下:
collection<–list<–vector
collection<–list<–arraylist
collection<–list<–linkedlist
collection<–set<–hashset
collection<–set<–hashset<–linkedhashset
collection<–set<–sortedset<–treeset
vector
1) 底层数据结构是数组,查询快,增删慢
2)线程安全,效率低
基于array的list,其实就是封装了array所不具备的一些功能方便我们使用,它不可能走入array的限制。性能也就不可能超越array。所以,在可能的情况下,我们要多运用array。另外很重要的一点就是vector“sychronized”的,这个也是vector和arraylist的唯一的区别。
arraylist
1).底层数据结构是数组,查找快,增删慢。
2). 线程不安全,效率高
同vector一样是一个基于array上的链表,但是不同的是arraylist不是同步的。所以在性能上要比vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。
linkedlist
1) 底层数据结构是链表,查询慢,增删快
2)线程不安全,效率高
linkedlist不同于前面两种list,它不是基于array的,所以不受array性能的限制。它每一个节点(node)都包含两方面的内容:
1. 节点本身的数据(data);
2. 下一个节点的信息(nextnode)。所以当对linkedlist做添加,删除动作的时候就不用像基于array的list一样,必须进行大量的数据移动。只要更改nextnode的相关信息就可以实现了。这就是linkedlist的优势。
hashset集合:
1) 底层数据结构是哈希表,哈希表依赖两个方法hascode ()和equals()方法
2)两个方法的执行顺序:
首先判断hascode()值是否相同
是:继续执行equals()方法,看其返回值
是true:说明元素重复,不添加
是false:就直接添加元素
否:就直接添加到集合
treeset集合:
1)底层数据结构是二叉树
总结:
1. 所有的list中只能容纳单个不同类型的对象组成的表,而不是key-value键值对。例如:[ tom,1,c ];
2. 所有的list中可以有相同的元素,例如vector中可以有 [ tom,koo,too,koo ];
3. 所有的list中可以有null元素,例如[ tom,null,1 ];
4. 基于array的list(vector,arraylist)适合查询,而linkedlist(链表)适合添加,删除操作。
hashset:虽然set同list都实现了collection接口,但是他们的实现方式却大不一样。list基本上都是以array为基础。但是set则是在hashmap的基础上来实现的,这个就是set和list的根本区别。hashset的存储方式是把hashmap中的key作为set的对应存储项。
,大量的免费java入门教程,欢迎在线学习!
以上就是java集合有哪些的详细内容。
其它类似信息

推荐信息