我是靠谱客的博主 可靠电灯胆,最近开发中收集的这篇文章主要介绍【Java】集合的基础知识Java 集合,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java 集合

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

Collection

java-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<E>()构建空的ArrayList
ArrayList<E>(Collection<? extends E> c)构建一个ArrayList并使用c中的元素进行初始化
ArrayList<E>(int capacity)构建一个指定容量的ArrayList

2.常用方法

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

3.特点

  • 只能充当List

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

补充:

arraylistVSvector

LinkedList

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

1.构造函数

ConstructorDescription
LinkedList<E>()构建空的ArrayList
LinkedList<E>(Collection<? extends E> 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<E>()构建默认的HashSet
HashSet<E>(int capacity)指定初始容量并构建HashSet
HashSet<E>(Collection<? extends E> c)构建一个HashSet并使用c中的元素进行初始化
HashSet<E>(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<E>()构建默认的TreeSet,按照自然顺序升序存储
TreeSet<E>(Collection<? extends E> c)构建一个TreeSet并使用c中的元素进行初始化
TreeSet<E>(Comparator<? super E> comparator)指定比较器并构建TreeSet
TreeSet<E>(SortedSet s)构建包含给定SortedSet元素的 TreeSet

Queue

PriorityQueue

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

详细说明

ArrayDeque

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

Map

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

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

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

HashMap

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

1.构造函数

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

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

最后

以上就是可靠电灯胆为你收集整理的【Java】集合的基础知识Java 集合的全部内容,希望文章能够帮你解决【Java】集合的基础知识Java 集合所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部