集合】 【Java基础】java常用集合及特点区别

2021-01-29 20:40发布

5条回答
studentaaa
2021-02-02 11:22

JAVA常见的集合类特点分析

java集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用,集合类型主要有3种:set(集)、list(列表)和map(映射)。

Java API中所用的集合类,都是实现了Collection接口,它的一个类继承结构如下:

Collection<--List<--Vector

Collection<--List<--ArrayList

Collection<--List<--LinkedList

Collection<--Set<--HashSet

Collection<--Set<--HashSet<--LinkedHashSet

Collection<--Set<--SortedSet<--TreeSet

 

List(有序,可重复):      1.Vector  底层数据结构是数组,查询快,增删慢,线程安全,效率低。

                                2.ArrayList 底层数据结构是数组,查询快,增删慢 , 线程不安全,效率高。

                                3.LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高。

Set(无序,唯一)    :     1.HashSet 底层数据结构是哈希表; 哈希表依赖两个方法:hashCode()和equals() ,执行顺序:首先判断hashCode()值是否相同,如果是,继续执行equals(),看其返回值如果为true说明元素重复,则不添加 ,如果是false就添加到集合 。若hashCode()值不相同:就直接添加到集合

                                2.LinkedHashSet  底层数据结构由链表和哈希表组成。链表保证元素有序,哈希表保证元素唯一。

                                3.TreeSet 底层数据结构是红黑树。(是一种自平衡的二叉树)  根据比较的返回值是否是0来保证元素唯一性,其元素的排序通常为两种方式,第一种方式为自然排序(元素具备比较性) ,让元素所属的类实现Comparable接口 , 第二种方式为比较器排序(集合具备比较性) ,让集合接收一个Comparator的实现类对象。

 

map(映射)           :     1.Map集合的数据结构仅仅针对键有效,与值无关。存储的是键值对形式的元素,键唯一,值可重复。 

                                2.hashMap 底层数据结构是哈希表。线程不安全,效率高 ; 哈希表依赖两个方法:hashCode()和equals();hashCode()和equals()执行顺序为 : 首先判断hashCode()值是否相同,如果是true则继续执行equals(),若返回值是true, 则说明元素重复,不添加,反之则添加; 若首先判断hashCode()值是false, 则添加到集合中。

                                3.LinkedHashMap 底层数据结构由链表和哈希表组成;链表保证元素有序, 哈希表保证元素唯一。

                                4.Hashtable 底层数据结构是哈希表。线程安全,效率低; 哈希表依赖两个方法:hashCode()和equals();hashCode()和equals()执行顺序为 : 首先判断hashCode()值是否相同,如果是true则继续执行equals(),若返回值是true, 则说明元素重复,不添加,反之则添加; 若首先判断hashCode()值是false, 则添加到集合中。

                                5.TreeMap 底层数据结构是红黑树(一种自平衡的二叉树) ,其根据比较的返回值是否是0来保证元素唯一性, 元素的排序通过两种方式:第一种是自然排序(元素具备比较性) 即让元素所属的类实现Comparable接口,第二种是比较器排序(集合具备比较性) ,即让集合接收一个Comparator的实现类对象。

一周热门 更多>