首页 > 编程语言 >【Java基础】Java容器相关知识小结

【Java基础】Java容器相关知识小结

时间:2023-11-08 21:57:29浏览次数:60  
标签:容器 Java 1.1 效率高 接口 链表 线程 小结

目录

0. 前言

容器,顾名思义,就是java中存储数据的常用结构,在C++中我们接触过数组、链表等等,在java中,容器则进一步规范化,形成了如下的容器接口继承关系图:

java容器主要包括collection接口(集合)和map接口(图)

1. Collection接口

1.1. List接口

1.1.1. ArrayList

数组实现,查询快,增删慢,线程不安全,效率高;

1.1.2. LinkedList

链表实现,查询慢,增删快,线程不安全,效率高;

1.1.3. Vector

数组实现,查询快,增删慢,同步访问

1.1.4. Stack

vector子类,先进后出,vector不常用,stack却很常用。

1.2. Set接口

1.2.1. HashSet

基于HashMap实现,线程不安全,效率高;
存储元素无序,不可重复;

1.2.2. LinkedHashSet

基于LinkedHashMap实现,线程不安全,效率高;
存储元素有序,不可重复;

1.2.3. TreeSet

基于TreeMap实现,线程不安全,效率高;
存储元素有序,不可重复;

1.3. Queue接口

1.3.1. PriorityQueue

通过二叉小顶堆实现,可以用一棵完全二叉树表示。

1.3.2. LinkedList

链表实现,查询慢,增删快,线程不安全,效率高;

2. Map接口

2.1. HashMap

数组+链表+红黑树实现,线程不安全,效率高;
重点是扩容和红黑树转换

2.2. TreeMap

和HashMap无序排序不同,SortedMap接口在内部会对Key进行排序,注意到SortedMap是接口,它的实现类是TreeMap。

2.3. LinkedHashMap

底层数据结构类似hashmap,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序、访问顺序。

3.常见用法——增/删/改/查/排序/容量

以上是简单的容器特性介绍,下面是一些常用的容器类的使用方法,废话不多说,上图:

后记

如果觉得我写得还算不错,不妨点赞关注一波走起~
想看更多博文,请访问我的各平台主页:博客园 / CSDN / 51CTO / 掘金论坛 / 知乎

参考文章

  1. Java常用容器基础操作汇总
  2. 菜鸟教程相关文章

标签:容器,Java,1.1,效率高,接口,链表,线程,小结
From: https://www.cnblogs.com/CrazyPixel/p/17818423.html

相关文章

  • Java——集合
     一、集合类概述为什么会出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作数组和集合类同是容器,有何不同?数组虽然可以存储对象,但长度是固定的;集合的长度是可变的。数组中可以存储基本数据类型;集合只能存储对象。......
  • java 创建字符串对象
    packagecom.elaina.test1;publicclassStringTest{publicstaticvoidmain(String[]args){//直接赋值Strings1="abc";System.out.println(s1);//使用new//空参构造,创建一个空白的字符串对象Strings2......
  • java jna 动态库从资源路径载入问题?
    在其他项目中依赖你的功能jar包时,可能出现无法找到动态库的问题。这是因为在这种情况下,动态库不再位于资源目录中,而是被打包到了依赖的项目中。为了解决这个问题,你可以尝试以下方法:修改Native.loadLibrary方法的调用方式:将动态库的绝对路径传递给Native.loadLibrary方法,而不......
  • 有趣的Java之记录用户操作日志
    Java记录操作日志java自带的日志框架是java.util.logging(JUL),从JDK1.4(2002)开始捆绑在JDK中。可以使用JUL来记录操作日志。以下是使用JUL记录事务的示例://java.util.loggingjava.util.logging.Loggerlogger=java.util.logging.Logger.getLogger(this.getClass().getName());......
  • Java学习—Java方法
    那么什么是方法呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的命名规则1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerso......
  • Java安全机制之一——SecurityManager和AccessController
    前言:在看socket相关代码的时候,AbstractPlainSocketImpl中的一段代码吸引了我,其实之前见过很多次类似的代码,但一直不想去看,只知道肯定和权限什么的相关,这次既然又碰到了就研究一下,毕竟也不能对java基本代码一无所知。static{java.security.AccessController.doPrivileged(......
  • Java_消息队列_RocktMQ
    RocketMQ安装RocketMQ的安装包分为两种,二进制包和源码包sudoapt-getinstalldefault-jdksudoapt-getinstallmaven解耦,异步,削峰填谷异步消息可以作为解耦消息的生产和处理的一种解决方案部署:包括NameServer、Broker、Proxy组件NameServer需......
  • java基础学习:二进制,八进制,十六进制
      ......
  • 如何将我的Java程序转换为.exe文件?
    内容来自DOChttps://q.houxu6.top/?s=如何将我的Java程序转换为.exe文件?如果我有一个Java源文件(*.java)或一个类文件(*.class),我如何将其转换为一个.exe文件?我还需要一个程序的安装程序。javapackagerJavaPackager工具用于编译、打包和准备Java和JavaFX应用程序进行分发。......
  • java 获取resources下文件的路径 使用 ClassLoader类 获取路径,使用流的方式读取
    java获取resources下文件的路径使用ClassLoader类,使用流的方式读取Java获取resources下文件的路径在Java开发中,我们经常需要读取resources目录下的文件,例如配置文件、模板文件等。本文将介绍如何获取resources下文件的路径,并提供相应的代码示例。1.resources目录在Java项......