首页 > 其他分享 >10 常用容器

10 常用容器

时间:2023-03-19 16:59:14浏览次数:39  
标签:返回 10 常用 java 容器 元素 接口 util key

这些容器的泛型中全部只能使用对象,不能使用基本数据类型

10.0 Collection Framework

  • java.util.Collection
  • 集合中不能存放基本类型数据,而只能存放对象的引用。
  • Collection的API说明文件中存在三个主要的接口
    • List
    • Set
    • Map:实际上并没有继承Collection这个接口

Java 5之后,增加了Queue体系集合,代表一种队列集合实现。

  • Collection接口

    • 所有单列集合最顶层的接口,里边定义了所有单列集合共性的方法

    • 任意的单列集合都可以使用Collection接口中的方法

    • public boolean add(E e)          把给定的对象添加到当前集合中。
      public void clear()              清空集合中所有的元素。
      public boolean remove(E e)       把给定的对象在当前集合中册除。
      public boolean contains(E e)     判断当前集合中是否包合给定的对象。
      public boolean isEmpty()         判断当前集合是否为空。
      public int size()                返回集合中元素的个数。
      public Object[] toArray()        把集合中的元素,存储到数组中。
      
  • List接口

    • 有序的集合(存储和取出顺序相同)
    • 允许存储重复的元素
    • 有索引,可以使用普通的for循环遍历
  • Set接口

    • 不允许存储重复元素
    • 没有索引,不能使用普通for循环遍历
    • 无序
  • Queue接口

    • 代表一种队列集合实现

10.1 List

接口:java.util.List<>

实现:

  • java.util.ArrayList<>:变长数组

    • List<Interger> = new ArrayList<>();
  • java.util.LinkedList<>:双链表

    • List<Interger> = new LinkedList<>();

函数:

  • add():在末尾添加一个元素
  • clear():清空
  • size():返回长度
  • isEmpty():是否为空
  • get(i):获取第i个元素
  • set(i, val):将第i个元素设置为val

10.2 栈

栈是实现,是类,不是接口。

类:java.util.Stack<>

函数:

  • push():压入元素
  • pop():弹出栈顶元素,并返回栈顶元素
  • peek():返回栈顶元素
  • size():返回长度
  • empty():栈是否为空
  • clear():清空

10.3 队列

接口:java.util.Queue<>

实现:

  • java.util.LinkedList<>:双链表

    • Queue<Integer> q = new LinkedList<>();
  • java.util.PriorityQueue<>:优先队列

    • 默认是小根堆,大根堆写法:Queue<Integer> q = new PriorityQueue<>(Collections.reverseOrder())

函数:

  • add():在队尾添加元素
  • remove():删除并返回队头
  • isEmpty():是否为空
  • size():返回长度
  • peek():返回队头
  • clear():清空

10.4 Set

接口:java.util.Set<K>

实现:

  • java.util.HashSet<K>:哈希表

    • Set<Integer> set = new HashSet<>();

    • for(int x : set){
          //遍历一个set,不一定有序
      }
      
    • 哈希表的插入、删除、查询、修改都是O(1)

  • java.util.TreeSet<K>:平衡树

    • Set<Integer> set = new TreeSet<>();
    • 动态维护一个有序序列——想到二分
    • 效率更低一些,插入、删除、修改、查询都是O(logn)

函数:

  • add():添加元素
  • contains():是否包含某个元素
  • remove():删除元素
  • size():返回元素数
  • isEmpty():是否为空
  • clear():清空

java.util.TreeSet多的函数:

  • 支持二分查找操作
  • 要使用下列,不能用Set<>接口,必须得TreeSet<Integer> set = new TreeSet<>();
  • ceiling(key):返回大于等于key的最小元素,不存在则返回null
  • floor(key):返回小于等于key的最大元素,不存在则返回null

10.5 Map

接口:java.util.Map<K, V>

实现:

  • java.util.HashMap<K, V>哈希表

    • 增、删、改、查都是O(1),但是是无序的;

    • Map<String, Integer> map = new HashMap<>();

    • //遍历
      for(Map.Entry<String, Integer> entry : map.entrySet()){
          System.out.printf("%s %d\n", entry.getkey(), entry.getValue());
      }
      
  • java.util.TreeMap<K, V>平衡树

    • 动态维护一个有序序列,但时间复杂度O(logn)
    • Map<String, Integer> map = new TreeMap<>();
    • 有序是按K来判断的,比如String的字典序。

函数:

  • put(key, value):添加关键字和其对应的值
  • get(key):返回关键字对应的值
  • containsKey(key):是否包含关键字
  • remove(key):删除关键字
  • size():返回元素数
  • isEmpty():是否为空
  • clear():清空
  • entrySet():获取Map中的所有对象的集合
  • Map.Entry<K, V>:Map中的对象类型
    • getKey():获取关键字
    • getValue():获取值

java.util.TreeMap<K, V>多的函数:

  • 同样支持二分
  • 要使用下列,不能用Map<>接口,必须得TreeMap<String, Integer> map= new TreeMap<>();
  • ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
  • floorEntry(key):返回小于等于key的最大元素,不存在则返回null

标签:返回,10,常用,java,容器,元素,接口,util,key
From: https://www.cnblogs.com/whxky/p/17233552.html

相关文章

  • vSphere部署系列之10——虚拟机模板和规范
    vSphere部署系列之10——虚拟机模板和规范 原创Sunshyfangtian2016-09-0410:56:01博主文章分类:虚拟化©著作权文章标签模板虚拟化克隆文章分类WindowsServer服务器......
  • RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:784, u
    ​ 发现报错:RuntimeError:NCCLerrorin:/pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:784,unhandledsystemerror​编辑想在linux上跑跑mmclassification......
  • Pandas 常用操作
     Pandas库专为数据分析而设计,它是使Python成为强大而高效的数据分析环境的重要因素。一、Pandas数据结构1、importpandasaspdimportnumpyasnpimportmatplotli......
  • 几种常用降压集成开关电源芯片
     开关电源类1、LM2575   oscillatorfrequency  开关频率52kHz   常用配套电感100uh 输入15V到24V。最大电流1A。2、LM2596 oscillatorfrequency  ......
  • 优先队列(PriorityQueue)常用方法及简单案例
    1前言PriorityQueue是一种特殊的队列,满足队列的“队尾进、队头出”条件,但是每次插入或删除元素后,都对队列进行调整,使得队列始终构成最小堆(或最大堆)。具体调整如下:插入......
  • 牛客练习赛100
    牛客练习赛100B.小红的子序列(dp)题目链接子序列问题一般是dp问题,这里结尾dp状态只有四种,蓝偶,红偶,蓝奇,红奇。对于当前物品,所要做的判断就是加与不加入状态完全相反的背......
  • Java容器及其常用方法汇总
    1概述JavaCollections框架中包含了大量的接口及其实现类和操作它们的算法,主要包括列表(List)、集合(Set)、映射(Map),如下:接口实现类数据结构初始容量加载因子扩容......
  • Linux常用命令
    Linux常用命令关机:shutdownsync#将数据由内存同步到硬盘中shutdown#关机指令,你可以manshutdown来看一下帮助文档。例如你可以运行如下命令关机:shutdown-h10......
  • adb常用命令总结
    1前言​ADB(AndroidDebugBridge)即Android调试桥,采用监听SocketTCP端口的方式通讯。连接手机有2种方式:有线连接、无线连接。​(1)有线连接​使用数据线......
  • 常用办公脚本工具
    1前言​本文基于Android自动化测试项目、adb常用命令总结,整理了一些常用办公脚本,后续会根据工作需求持续更新。​脚本资源见→常用办公脚本工具​脚本目......