栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】集合的基础知识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】集合的基础知识

Java 集合

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、linkedList、HashSet、linkedHashSet、HashMap、linkedHashMap 等等。

Collection


其中,List接口存储一组不唯一、有序插入的对象,能够通过索引访问元素;Queue接口保证先进先出,可以被定义为有序列表;Set接口对collection进行扩展,存储一组唯一、无序的对象。

Set vs List

  1. Set元素唯一、无序;List元素不唯一、有序

  2. Set检索效率低,增删效率高且不会引起元素位置改变;List检索效率高,增删效率低且引起元素位置改变

Collection为什么不直接实现 Iterator 接口?
https://blog.csdn.net/qq_42776429/article/details/82470380

List ArrayList

ArrayList类继承自 AbstractList 类并实现 List接口,使用动态数组来存储元素,与C++中的Vector类似。它是non synchronized(非同步的),操作效率略慢于linkedList。

1.构造函数

ConstructorDescription
ArrayList()构建空的ArrayList
ArrayList(Collection c)构建一个ArrayList并使用c中的元素进行初始化
ArrayList(int capacity)构建一个指定容量的ArrayList

2.常用方法

https://www.runoob.com/java/java-arraylist.html

3.特点

  • 只能充当List

  • get/set元素O(1),增删引起元素位置移动,更适合存储和访问数据

补充:

linkedList

linkedList 类使用双向链表来存储元素。它提供了一个链表数据结构。它继承了 AbstractList 类并实现了 List 和 Deque 接口。

1.构造函数

ConstructorDescription
linkedList()构建空的ArrayList
linkedList(Collection c)构建一个ArrayList并使用c中的元素进行初始化

2.常用方法
https://www.runoob.com/java/java-linkedlist.html

3.特点

  • 可以充当List、Queue、Deque

  • 查找O(n/2),增删不会引起元素位置改变,更适合操作数据

Set HashSet

HashSet类基于散列的机制存储元素,元素唯一(允许null值)且不维护插入顺序(实际上按照hashcode插入),利于查找。HashSet类是非同步的,初始默认容量为16、负载因子为0.75。

1.构造函数

ConstructorDescription
HashSet()构建默认的HashSet
HashSet(int capacity)指定初始容量并构建HashSet
HashSet(Collection c)构建一个HashSet并使用c中的元素进行初始化
HashSet(int capacity, float loadFactor)指定初始容量、负载因子并构建HashSet

2.常用方法

https://www.runoob.com/java/java-hashset.html

注:

linkedHashSet是HashSet的一个实现类,也是线程不安全的。除了HashSet的基本特性外,linkedHashSet维护插入顺序。

TreeSet

TreeSet类使用树存储元素,元素是唯一的(不允许null值)且保持升序,访问和检索速度非常快。同样,TreeSet类也是线程不安全的。它继承自AbstractSet类并实现NavigableSet接口(扩展了SortedSet、Set、Collection和Iterable接口)。

ConstructorDescription
TreeSet()构建默认的TreeSet,按照自然顺序升序存储
TreeSet(Collection c)构建一个TreeSet并使用c中的元素进行初始化
TreeSet(Comparator comparator)指定比较器并构建TreeSet
TreeSet(SortedSet s)构建包含给定SortedSet元素的 TreeSet
Queue PriorityQueue

PriorityQueue类使用队列存储元素,继承自AbstractQueue类。PriorityQueue是基于优先堆的一个无界队列,这个优先队列中的元素可以默认自然排序或者通过提供的Comparator(比较器)在队列实例化的时排序。要求使用Java Comparable和Comparator接口给对象排序,并且在排序时会按照优先级处理其中的元素。

详细说明

ArrayDeque

ArrayDeque类继承自AbstractCollection类并实现Deque接口,支持两端元素的插入和删除。ArrayDeque中不允许有空元素且不是线程安全的,其操作效率高于linkedList和Stack。

Map

Map按照键值对存储元素,键必须唯一而值可以不唯一。


其中,HashMap是Map的实现,但不维护任何顺序;linkedHashMap是Map的实现,继承自HashMap类且维护插入顺序;TreeMap是Map和SortedMap的实现,它保持升序。

Map无法遍历,因此需要使用keySet()或entrySet()方法将其转换为 Set。

HashMap

HashMap是一个散列表,键唯一且不维护插入顺序,最多允许一条记录的键为 null,不支持线程同步。

1.构造函数

ConstructorDescription
HashMap()构建默认的HashMap
HashMap(int capacity)构建指定初始化容量的HashMap
HashMap(int capacity, float loadFactor)指定初始化容量、负载因子并构建HashMap
HashMap(Map m)使用给定Map 对象m的元素来初始化HashMap

2.常用方法
https://www.runoob.com/java/java-hashmap.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号