java集合框架及其特点(List、Set、Queue、Map)

简介: java集合框架及其特点(List、Set、Queue、Map)

常见的集合以及他们的特点有哪些呢

java集合类主要由Collection和Map两个根接口派生出来的。

Collection派生了List,Set,Queue这三个子接口。

1、List代表有序可重复集合,可直接根据元素的索引来访问。
ArrayList:
  • 排列有序,可重复
  • 底层使用数组
  • 速度快,增删慢
  • 线程不安全
  • 容量不够时,ArrayList是当前容量*1.5+1
Vector:
  • 排列有序,可重复
  • 底层使用数组
  • 速度快,增删慢
  • 线程安全,效率低
  • 当容量不足时,Vector默认扩展一倍容量
LinkedList:
  • 排列有序,可重复
  • 底层使用双向循环链表数据结构
  • 查询速度慢,增删快,add()和remove()方法快
  • 线程不安全
2、Set代表无序不可重复集合,只能根据元素本身来访问。
HashSet:
  • 排列无序,不可重复
  • 底层使用Hash表实现
  • 存取速度快
  • 内部是HashMap
TreeSet:
  • 排列无序,不可重复
  • 底层使用二叉树实现
  • 排序存储
  • 内部是TreeMap的SortedSet
LinkedHashSet:
  • 采用hash表存储,并用双向链表记录插入顺序
  • 内部是LinkedHashMap
3、Queue是队列集合。

在两端出入的List,可以用数组或链表实现

4、Map代表的是存储key-value对的集合,可根据元素的key来访问value。
HashMap:
  • 键不可重复,值可重复
  • 底层哈希表
  • 线程不安全
  • 允许key值为null,value也可以为null
HashTable:
  • 键不可重复,值可重复
  • 底层哈希表
  • 线程安全
  • key、value都不允许为null
TreeMap:
  • 键不可重复,值可重复
  • 底层二叉树

线程安全的有Vector、HashTable。它们都使用 synchronized 关键字来实现线程安全。

相关文章
|
4天前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
10 0
|
4天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
10 0
|
4天前
|
存储 Java
【JAVA基础篇教学】第十篇:Java中Map详解说明
【JAVA基础篇教学】第十篇:Java中Map详解说明
|
4天前
|
存储 安全 Java
【JAVA基础篇教学】第八篇:Java中List详解说明
【JAVA基础篇教学】第八篇:Java中List详解说明
|
4天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
Java
java中Set,Map,Stack一些简单用法
1 import java.util.Iterator; 2 import java.util.Stack; 3 import java.io.*; 4 import java.util.
615 0
|
2天前
|
缓存 安全 Java
7张图带你轻松理解Java 线程安全,java缓存机制面试
7张图带你轻松理解Java 线程安全,java缓存机制面试
|
23小时前
|
Java
深入理解Java并发编程:线程池的应用与优化
【5月更文挑战第18天】本文将深入探讨Java并发编程中的重要概念——线程池。我们将了解线程池的基本概念,应用场景,以及如何优化线程池的性能。通过实例分析,我们将看到线程池如何提高系统性能,减少资源消耗,并提高系统的响应速度。
11 5
|
1天前
|
消息中间件 安全 Java
理解Java中的多线程编程
【5月更文挑战第18天】本文介绍了Java中的多线程编程,包括线程和多线程的基本概念。Java通过继承Thread类或实现Runnable接口来创建线程,此外还支持使用线程池(如ExecutorService和Executors)进行更高效的管理。多线程编程需要注意线程安全、性能优化和线程间通信,以避免数据竞争、死锁等问题,并确保程序高效运行。