首页 > 其他分享 >集合框架介绍

集合框架介绍

时间:2023-12-01 20:45:57浏览次数:36  
标签:HashMap 框架 ArrayList List 介绍 Vector 线程 集合 数据结构

什么是集合框架?
java集合框架提供了数据结构和算法以及List、Collection、Set、Map接口 Map为独立接口,而List和Set是继承了Collection接口

List下有ArrayList,Vector,LinkedList
Set下有HashSet,LinkedHashSet,TreeSet
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

 

List接口
List是有序的,可重复的
ArrayList:
数据结构是数组,他的查询快,但是增删慢,因为每当插入或删除操作时,对应的需要向前或向后的移动元素
线程不安全,效率高

Vector:
数据结构是数组,查询快,增删慢。Vector和ArrayList的语法其实基本上的一样的区别就是
线程安全,效率低

LinkedList:
数据结构是链表,查询慢,增删快。为什么查询慢,你可以把LinkedList当成链条去理解。双向链表的查询逻辑是他会根据index的大小判断是从前开始遍历还是从后开始遍历,如果index更靠前就从前遍历,更靠后就从后遍历,也就是在查询过程中,会一次次的移动指针直到获取到index的值。而增删快,你链条取一个链直接连接上就可以了
线程不安全,效率高

有些人可能不理解线程是什么,我来打个比方ArrayList、LinkedList、Vector都是一个学校,但是ArrayList、LinkedList这2个学校有好几个门可以同时进学校,就会导致可能进来一些不法分子,但是Vector学校只有一个门进入学校,就会查的很严格,不让不法分子进入校园。希望大家可以理解!

Map下主要有HashTable,HashMap,TreeMap。
1.HashMap
无序,非线程安全,效率高。HashMap允许null值(key和value都允许)。

2. HashTable
无序,线程安全,效率低。除构造函数外,HashTable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。HashTable不允许null值(key和value都允许)。

3. TreeMap
有序,非线程安全,效率高(O(logN)),但比不上HashMap (O(1))。

Set 接口存储一组唯一,无序的对象。
1.HashSet

底层数据结构是哈希表。(无序,唯一)
依赖的两个方法:hashCode()和equals() 保证元素唯一性

2. LinkedHashSet

底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一


3. TreeSet

底层数据结构是红黑树。(唯一,有序)
————————————————
版权声明:本文为CSDN博主「小池敲代码了吗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73245042/article/details/134698433

博客来源:转载我自己

标签:HashMap,框架,ArrayList,List,介绍,Vector,线程,集合,数据结构
From: https://www.cnblogs.com/cq971/p/17870824.html

相关文章

  • 集合框架(三)ArrayList的常见使用
    ArrayList1、动态数组实现ArrayList的底层是一个数组,当数组空间不足时,会自动扩容为当前容量的1.5倍(JDK1.4及以前的版本扩容为当前容量的2倍)。扩容是通过创建一个新的数组,并将原始数组中的元素拷贝到新数组中完成的。2、与数组相比具有动态增长与普通数组相比,ArrayList具有动态......
  • Java集合框架详解
    Java集合框架是什么?Java中的集合框架指的是一组接口、类和算法,用于存储和操作一组对象。这些对象可以是基本类型、自定义类型或其他Java对象集合框架提供了更加高效、灵活和功能丰富的数据结构,而不限于数组或其他简单的数据结构。通过使用Java的集合框架,可以大大提高代码的可......
  • 集合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......
  • 《深度学习入门——自制框架》读书笔记
    1.自动微分step2创建变量的函数#箱子类,存放一个变量数据classVariable: def__init__(self,data): self.data=data#函数类的基类classFunction:#__call__方法是一个特殊的Python方法。#定义了这个方法后,当f=Function()时,就可以通过编写f(...)来......
  • 案例解析关于ArkUI框架中ForEach的潜在陷阱与性能优化
    本文分享自华为云社区《深入解析ForEach的潜在陷阱与性能优化:错误用法与性能下降的案例分析》,作者:柠檬味拥抱。在ArkUI框架中,ForEach接口是基于数组类型数据进行循环渲染的强大工具。它需要与容器组件搭配使用,并能够根据数据源动态生成相应的子组件。以下是对ForEach接口的详细......
  • 安防视频监控系统应该具备哪些技术?LiteCVR安防平台要点介绍
    视频监控系统是现代社会中不可或缺的一部分,广泛应用于各个领域,如安全监控、交通监控、工业生产监控等。为了满足不同领域的需求,视频监控系统需要具备多种技术。首先,高清视频技术是视频监控系统的基本要求。高清视频能够提供更清晰、更逼真的图像,帮助用户更好地了解监控场景。为了......
  • 直播网站源码,写一个android底部导航栏框架
    直播网站源码,写一个android底部导航栏框架import'package:flutter/material.dart'; voidmain(){ runApp(MyApp());} classMyAppextendsStatelessWidget{ @override Widgetbuild(BuildContextcontext){  returnMaterialApp(   title:'BottomNaviga......
  • GraphFrames介绍和基本用法
    阅读本篇博客前需先了解图数据、scala、spark相关知识 GraphFrames是一款图处理类库。该类库构建在DataFrame之上,既能利用DataFrame良好的扩展性和强大的性能,同时也为Scala、Java和Python提供了统一的图处理API。github:https://github.com/graphframes/graphframes官方文档:h......