首页 > 编程语言 >Java集合框架详解

Java集合框架详解

时间:2023-12-01 20:34:13浏览次数:31  
标签:Java 元素 List 接口 索引 详解 Collection 集合

Java集合框架是什么? Java中的集合框架指的是一组接口、类和算法,用于存储和操作一组对象。这些对象可以是基本类型、自定义类型或其他Java对象 集合框架提供了更加高效、灵活和功能丰富的数据结构,而不限于数组或其他简单的数据结构。通过使用Java的集合框架,可以大大提高代码的可读性、可维护性和可扩展性 集合框架主要分为三个部分:Collection接口、Map接口和其他集合类 Java集合框架图 集合接口 集合框架定义了一些接口。本节提供了每个接口的概述: Collection接口 Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。 Collection 接口存储一组不唯一,无序的对象。 list接口 List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。 List 接口存储一组不唯一,有序(插入顺序)的对象。 Set List 接口 List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。 List 接口存储一组不唯一,有序(插入顺序)的对象。 Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。 SortedMap 继承于 Map,使 Key 保持在升序排列。 Collection集合适用场景分析 Collection集合Set和List的区别 List 接口:元素按进入先后有序保存,有序,可重复 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全 ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全 Vector 接口实现类 数组, 同步, 线程安全 Set 接口: 仅接收一次,无序,不可重复,并做内部排序 HashSet 使用hash表(数组)存储元素 LinkedHashSet 链表维护元素的插入次序 TreeSet 底层实现为二叉树,元素排好序 常用方法 方法名 描述 public boolean add(E e) 把给定的对象添加到当前集合中 public void clear() 清空集合中所有的元素 public boolean remove(E e) 把给定的对象在当前集合中删除 public boolean contains(Object obj) 判断当前集合中是否包含给定的对象 public boolean isEmpty() 判断当前集合是否为空 public int size() 返回集合中元素的个数。 Map 接口 键值对的集合 (双列集合) Hashtable 接口实现类, 同步, 线程安全 HashMap 接口实现类 ,没有同步, 线程不安全 LinkedHashMap 有序 List集合 概念:List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的功能List也都继承了。 方法名 描述 void add(int index,E element) 在此集合中的指定位置插入指定的元素 E remove(int index) 删除指定索引处的元素,返回被删除的元素 E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 E get(int index) 返回指定索引处的元素 ArrayList 特点:存取有序、可重复、有索引 底层原理:是基于数组实现的 利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组 添加第一个元素时,底层会创建一个新的长度为10的数组 存满时,会扩容1.5倍 使用场景:大量数据的查询、 少量数据的增删 LinkedLsit 数据结构:双链表 、查询慢、增删快 Set集合 特点: 无序:添加数据的顺序和获取出的数据顺序不一致; HashSet 底层原理:基于哈希表实现。 哈希表是一种增删改查数据,性能都较好的数据结构。 哈希表 JDK8之前,哈希表 = 数组+链表 LinkedHashSet LinkedHashSet 是 HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表 LinkedHashSet 不允许添重复元素 TreeSet 特点:不重复、无索引、可排序(默认升序排序 ,按照元素的大小,由小到大排序) 底层是基于红黑树实现的排序 三、Map Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。 根据键值对进行存储。 HashMap 特点:无序、不重复、无索引; 哈希表 JDK8之前,哈希表 = 数组+链表 JDK8开始,哈希表 = 数组+链表+红黑树 哈希表是一种增删改查数据,性能都较好的数据结构。 LinkedHashMap 特点:(由键决定特点): 有序、不重复、无索引。 底层原理:底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)。 TreeMap 特点:由键决定特点:按照键的大小默认升序排序、不重复、无索引。 由键决定特点:按照键的大小默认升序排序、不重复、无索引。 TreeMap集合同样也支持两种方式来指定排序规则 让类实现Comparable接口,重写比较规则。 TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。 总结不易,给个小攒攒吧~ ———————————————— 版权声明:本文为CSDN博主「天降伊利大王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/liyil66464/article/details/134720236

标签:Java,元素,List,接口,索引,详解,Collection,集合
From: https://www.cnblogs.com/lyl20051120/p/17870814.html

相关文章

  • 集合LinkedList的常见使用
    什么是LinkedList集合LinkedList集合是Java编程语言中的一种双向链表数据结构,它实现了List接口和Deque接口。与ArrayList类似,LinkedList也是一种动态数组,可以根据需要动态地增加或减少元素的大小。然而,LinkedList与ArrayList在内部实现和性能方面有所不同Lin......
  • 集合框架(二)LinkedList的常见使用
    LinkedList:非同步集合LinkedList不是同步集合,如果需要在多线程环境下访问该集合,需要手动实现线程同步。双向链表实现LinkedList内部使用双向链表来表示集合元素,每个节点都存储了元素、前驱节点和后继节点信息。添加/删除元素的效率较高由于是链表实现,LinkedList的添加/删除......
  • 集合框架Map的常见使用及循环的五中方式
    Map集合是什么?Map集合是一种以键值对形式存储和操作数据的数据结构,建立了key-value之间的映射关系,常用于存储和处理复杂的数据Map集合的主要特点:Map和List不同,Map是一种双列集合;Map存储的是key-value的映射关系;Map不保证顺序。在遍历时,遍历的顺序不一定是put......
  • 排序算法值鸡尾酒排序(java)
    一:概述冒泡排序的每一个元素都可以像小气泡一样,根据自身的大小,一点一点地向着数组的一侧移动。算法的每一轮都是从左到右比较元素,进行单向的位置交换的。鸡尾酒排序做了怎样的优化:鸡尾酒排序的元素比较和交换过程是双向的。二:举例子由9个数字组成的无序数列{2,3,4,5,6,7,1,9......
  • java Runtime
    packagenet.elaina.Runtime;importjava.io.IOException;publicclasstest1{publicstaticvoidmain(String[]args)throwsIOException{/*publicstaticRuntimegetRuntime()当前系统的运行环境对象publicvoidexit(......
  • Java设计模式-策略模式详解
    1.策略模式基本了解策略模式(StrategyPattern)是一种行为型设计模式,它定义了一组可以相互替换的算法,使得客户端可以根据不同的需求选择不同的算法,将对象和行为分开。在策略模式中,我们创建了一个策略接口,该接口定义了所有必需的方法。然后,我们创建了实现了该策略接口的具体策略......
  • 【STM32F103】HC-SR04超声波测距模块详解(附工程文件)
    前言:使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他烧录器也可以),0.96寸OLED屏幕(非必须,仅供显示测距结果,可以使用串口助手代替),若干杜邦线。涉及操作stm32的GPIO口,外部中断,定时器,本文中不会详细解释,仅提供代码思路。HC-SR04:HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。......
  • java~将多个输出流压缩成一个zip文件
    hutool工具包可以帮我们完成这件事,几行代码可以实现,我们提供两种方式,压缩本地文件和压缩内存流。压缩本地文件@Testpublicvoidzip(){StringentryName="d:\\codegen\\1";StringzipFilePath="d:\\codegen\\example.zip";//将entryName这个文件或者目录,......
  • Java环境变量配置及报错java --version Error: could not open `D:\APP\Develop\JA
    C:\Users\Administrator>java--versionError:couldnotopen`D:\APP\Develop\JAVA\jre\lib\amd64\jvm.cfg'Java环境变量的配置控制面板→系统→高级系统设置→环境变量在下方系统变量中新建在下方系统变量中找到Path,双击打开,新建两个%JAVA_HOME%\bin%JAVA_HOME%\jre\b......
  • 虚拟机安装详解
    虚拟机安装 1.选择虚拟机软件
在安装虚拟机之前,需要选择一款合适的虚拟机软件。目前市面上有很多虚拟机软件供选择,如VMware、VirtualBox等。根据你的需求和操作系统的支持情况,选择合适的虚拟机软件。2.下载操作系统镜像文件
购买虚拟主机空间后,你会得到一个操作系统镜像文件......