专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java容器有哪些?_java容器详解

temp10 2025-02-21 15:29:33 java教程 14 ℃ 0 评论

集合容器概括有Collection和Map两大类

Collection下有List,Set;Map下有HashMap、HashTable、TreeMap

Java容器有哪些?_java容器详解

List下有ArrayList、LinkedList和Vector;Set下有HashSet、TreeSet;HashSet下有LinkedHashSet

List下的各种类都是可以重复的。ArrayList是基于数组实现的,特点查询速度快,增删慢。

查询快是因为数组的空间是连续的,查询时只要通过首地址和下标很快找到元素;增删慢是因为数组不能扩容的,

一旦增加或者删除元素,内部操作就会开辟一个数组把元素copy到新的数组,老的数组等待被垃圾回收。

LinkedList是基于双向链表的,相比于ArrayList的特点是查询慢,增删快。

查询慢是因为链表在内存中开辟的空间不一定是连续的,所以链表实现的方式是每个元素节点都会存放自己的地址、数据以及下一个节点的地址,

这样把所有的元素连接起来。所以当要查询元素的时只能一个一个地往下找,相比于数组的首地址加下标会慢上很多。

Vector也是基于数据实现的,相比于ArrayList是线程安全的,但是效率,性能低。

Set下各种实现类是不允许重复的。

HashSet是基于哈希表实现。其特点:不允许重复;允许null值,但是只能有一个;无序的,没有索引。

LinkedHashSet跟HashSet一样也是基于哈希表实现的。只不过,LinkedHashSet多了个链表,用来维护容器中

每个元素的顺序。其特点:不允许重复,只允许一个null值,有序的,没有索引。

TreeSet是SortedSet接口的唯一实现类,是基于二叉树实现的。TreeSet可以确保集合处于排序状态。

TreeSet支持两种排序方式,自然排序和定制排序,默认的是自然排序。

其特点是不允许重复,不允许null值,没有索引,也不包含索引操作的方法。

Map是双列集合的超类,也就是以键值对形式的类型。

HashMap和HashTable都实现了Map接口,但是两者是有区别的,主要区别在于:线程安全性,同步以及速度上。

HashMap是非线程安全的,可以接受null(key-value都可以为null);

HashTable是线程安全的,不可以接受null,可以多个线程共享一个HashTable;

HashTable由于是线程安全的,所以效率就比HashMap低,速度慢。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表