首页 > 编程语言 >java集合框架及其特点

java集合框架及其特点

时间:2023-10-20 10:37:36浏览次数:32  
标签:java 框架 重复 value 线程 key 集合 底层

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

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 关键字来实现线程安全。

 

标签:java,框架,重复,value,线程,key,集合,底层
From: https://www.cnblogs.com/gentle-man/p/17776433.html

相关文章

  • Java生态系统的进化:从JDK 1.0到今天
    文章目录JDK1.0:开启Java时代JDK1.1:Swing和内部类JDK1.2:Collections框架和JIT编译器JDK1.5:引入泛型和枚举JDK1.8:Lambda表达式和流JDK11以后:模块化和新特性未来展望1.云原生和容器化2.更好的性能和效率3.更强大的库和框架4.语言改进结论......
  • 【Java 进阶篇】使用 JDBC 更新数据详解
    在关系型数据库中,更新数据是一项常见的任务。通过JavaJDBC(JavaDatabaseConnectivity),我们可以使用Java编程语言来执行更新操作,例如修改、删除或插入数据。本文将详细介绍如何使用JDBC来进行数据更新操作,包括示例代码和必要的概念。JDBC更新操作概述在JDBC中,更新操作通常分为以下......
  • 从0到1实现 OpenTiny 组件库跨框架技术
    本文分享自华为云社区《从0到1实现OpenTiny组件库跨框架技术》,作者:华为云社区精选。在华为云《DTSETechTalk》技术直播第44期《0基础玩转OpenTiny跨框架组件库,实现一站式前端进阶》中,华为云前端开发DTSE技术布道师莫春辉老师在本期直播中与开发者一起交流了OpenTiny组件......
  • JS加密:JavaScript代码加密混淆
    JS加密,即JavaScript代码加密混淆,是指对js代码进行数据加密、逻辑混淆。使js代码不能被分析、复制、盗用,以达到保护js代码、保护js产品、保护js知识产权的目的。JS加密定义JS加密,即:JavaScript代码加密混淆、JavaScript代码混淆加密。JavaScript,简称JS,加密指对JS代码进行密文化处理......
  • Java基础的变量与常量
    1.编写第一个Java程序使用IDEA进行编写java程序1publicclassHello{2publicstaticvoidmain(String[]args){3System.out.print("HelloWorld");4}5}第一行:public class是定义类的关键字固定写法,Hello表示类名要与文件中的名字相同第......
  • jfinal框架下,连接国产达梦数据库,抛出SocketTimeoutException异常
    公司为政府开发项目,主框架选择springboot,orm框架使用jfinal。数据库为国产达梦数据库写统计类服务时,通常sql运行时间会比较久,超过10s的sql一定会报SocketTimeoutException异常 尝试使用原生jdbc创建连接,运行sql毫无问题。遂检查连接池设置。jfinal使用druid连接池网上搜索......
  • android 升级到java11,升级到androidx的操作方法
    androidstudioAndroid9(28)升级到Android10(29)Androidx小计_sdk29对应依赖androidx.appcompat:appcompat-resources是-CSDN博客java.lang.NoClassDefFoundError:Failedresolutionof:Landroidx/appcompat/R$drawable;-简书(jianshu.com)......
  • java课后动手动脑
    动手动脑Ⅰpackageorg.example;importjava.util.Scanner;importjavax.swing.*;publicclassMain{publicstaticvoidmain(Stringargs[]){inti=1,j=0,k;k=i/j;try{k=i/j;//Causesdivision-......
  • JAVA项目中的常用的异常处理情况
    https://www.cnblogs.com/gothic-death/p/9946415.html在说java异常处理情况之前简单说下:java中异常的定义。java程序在运行时出现的不正常情况称之为异常。为了防止此类情况发生后及时处理该异常,java将所有可能发生异常的情况用类的形式进行描述和封装。描述不正常情况的类称为......
  • Disjob—分布式任务调度框架
    简介Disjob是一款分布式的任务调度框架,天然为支持分布式长任务执行而设计,它除了具备常规的任务调度功能外,还提供:任务拆分及分布式并行执行、暂停及取消运行中的任务、恢复执行被暂停的任务、任务执行失败重试、保存任务的执行快照(Savepoint)、任务依赖、任务编排(DAG)、广播任务......