什么是容器

article/2025/11/9 10:15:41

什么是容器

  • 一:概念
  • 二:容器API类图
    • 2.1 Collection
    • 2.2 Set
    • 2.3 List
    • 2.4 Map
  • 三:详细解释
    • 3.1 Collection接口
      • 3.1.1 Collection用法
    • 3.2 Iterator接口
    • 3.3 List接口
    • 3.4 Comparable接口
  • 四:如何选择数据结构
    • 4.1 衡量标准:读的效率和改的效率
    • 4.2 Map接口
    • 4.3 JDK1.5泛型
    • 4.3.1 起因:
    • 4.3.2 解决方法:
    • 4.3.3 好处:
  • 五:总结&提升

一:概念

在Java中,容器是一种数据结构,用于存储和组织其他对象。容器提供了一种方式来管理和访问这些对象,并提供了各种方法来增加、删除、搜索和遍历其中的元素。Java提供了多种容器类,每种容器类都有其特定的用途和功能。

二:容器API类图

在这里插入图片描述

2.1 Collection

Collection代表了一个容器Collection集合

在Java中,java.util.Collection接口是表示一组对象的根接口。它是Java集合框架的基础,提供了统一的操作和方法,用于处理和管理对象的集合。

2.2 Set

Set(集合):存储唯一元素的集合。它不允许存储重复的元素,并提供了高效的查找和删除操作。常见的Set实现类包括HashSet、TreeSet和LinkedHashSet。

2.3 List

以有序的方式存储对象的集合。它允许存储重复的元素,并提供了按索引访问、插入、删除和搜索元素的方法。常见的List实现类包括ArrayList、LinkedList和Vector。

2.4 Map

Map(映射):以键值对(Key-Value)的形式存储元素的集合。它提供了通过键快速查找和访问值的功能。常见的Map实现类包括HashMap、TreeMap和LinkedHashMap。

Collection接口——定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式

Set中的数据对象没有顺序且不可以重复
List中的数据对象有顺序且可以重复
Map接口定义了存储“键(key)——值(value)映射对”的方法

三:详细解释

3.1 Collection接口

3.1.1 Collection用法

import java.util.*;
public class Name{private String firstName,lastName;public Name(String firstName,String lastName){this.firstName= firsName;this.lastName= lastName;}public String getFirsName(){ return firstName;}public String getLastName(){ return lastName;}public String toString(){ return firstName + " " + lastName;}
}public class Teat {public static void main(string[] args){Collection c =new ArrayList();//可以放入不同类型的对象c.add("hello");c.add(new Name("f1","11"));c.add(new Integer(100));System.out.println(c.size());System.out.println(c);}
}

输出结果 : 3 [hello,f1 11,100]
容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要要重写equals和hashCode方法以实现自定义的对象相等规则
注意:相等的对象应该具有相等的hash codes
增加Name类的equals和hashCode方法如下:

public boolean equals(Object obj){if(obj instanceof Name){Name name =(Name) obj;return (firstName.equals(name.firstName))&&(lastName.equals(name.lastName));}return super.equals(obj);
}public int hashCode(){return firstName.hashCode();
}

重写equals方法时必须重写hashCode方法

3.2 Iterator接口

  1. 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象
  2. Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作
  3. Iterator接口定义了如下方法
boolean hasNext (); //判断游标右边是否有元素
Object next(); //返回游标右边的元素并将游标移动到下一个位置
void remove(); // 删除游标左面的元素,在执行完next之后该操作只能执行一次

3.3 List接口

List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可根据序号存取容器中的元素
常用算法:
在这里插入图片描述

3.4 Comparable接口

问:上面的算法根据什么确定容器中对象的“大小”顺序?

  • 所有可以“排序”的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:public int compareTo(Object obj),

  • 该方法:
    返回 0 表示this==obj
    返回正数表示this>obj
    返回负数表示this<obj
    实现了Comparable接口的类通过实现comparaTo方法从而确定该类对象的排序方式

四:如何选择数据结构

4.1 衡量标准:读的效率和改的效率

  1. Array读快改慢
  2. Linked改快读慢
  3. Hash两者之间

4.2 Map接口

实现Map接口的类用来存储 键—值 对
实现类有HashMap和TreeMap
存储的 键—值 对通过键来标识,所以键值不能重复

4.3 JDK1.5泛型

4.3.1 起因:

  • JDK1.4以前类型不明确
  • 装入集合的类型都被当作Object对待,从而失去自己的实际类型
  • 从集合中取出时往往需要转型,效率低,容易产生错误

4.3.2 解决方法:

  • 在定义集合时同时定义集合中对象的类型

4.3.3 好处:

  • 增强程序的可读性和稳定性

五:总结&提升

  • 本文总结了Java中的容器概念和相关的API类图。容器是一种数据结构,用于存储和组织其他对象,并提供了各种操作方法。Java提供了多种容器类,包括Collection、Set、List和Map等。
  • 在容器API类图中,Collection代表一个容器集合,是Java集合框架的基础接口。Set是存储唯一元素的集合,不允许重复,并提供了高效的查找和删除操作。常见的Set实现类有HashSet、TreeSet和LinkedHashSet。List以有序方式存储对象的集合,允许重复元素,并提供了按索引访问、插入、删除和搜索元素的方法。常见的List实现类有ArrayList、LinkedList和Vector。Map以键值对的形式存储元素的集合,提供了通过键快速查找和访问值的功能。常见的Map实现类有HashMap、TreeMap和LinkedHashMap。
    在详细解释部分,介绍了Collection接口的方法,并给出了一个使用ArrayList的示例。还提到了容器类对象在调用remove、contains等方法时需要比较对象是否相等,需要重写equals和hashCode方法以实现自定义的对象相等规则。
  • 文章还介绍了Iterator接口,所有实现了Collection接口的容器类都有一个iterator方法返回一个实现了Iterator接口的对象,用于方便地遍历容器内的元素。
    List接口是Collection的子接口,实现List接口的容器类中的元素有顺序且可以重复,可以通过索引存取元素。
  • 文章提到了Comparable接口,它是实现排序的类所要实现的接口,通过实现compareTo方法来确定容器中对象的大小顺序。
    在如何选择数据结构部分,提到了衡量标准是读的效率和改的效率。Array的读取快但改变慢,LinkedList的改变快但读取慢,HashMap的性能在两者之间。
  • 最后,文章提到了JDK1.5引入的泛型,解决了在旧版本中集合中的元素被当作Object处理的问题,增强了程序的可读性和稳定性。

http://chatgpt.dhexx.cn/article/NIx7NsFD.shtml

相关文章

什么是应用容器

转载自https://www.cnblogs.com/qcloud1001/p/9273549.html 一、什么是容器&#xff1f; 容器这个词&#xff0c;当你第一眼看它或许脑子里是这东西&#xff1a;瓶瓶罐罐、装水、装其他东西的玩意。 不管是什么&#xff0c;总的来说&#xff0c;容器给人第一印象就是——“装”…

Docker解读(什么是容器)

一、What Is A Container 容器映像是一个软件的轻量级独立可执行软件包&#xff0c;包含运行它所需的一切&#xff1a;代码&#xff0c;运行时&#xff0c;系统工具&#xff0c;系统库&#xff0c;设置。不管环境如何&#xff0c;集装箱化软件都可以运行相同的Linux和Windows应…

什么是Docker容器?Docker容器是如何工作的?

Docker是一种轻量级的虚拟化技术&#xff0c;同时是一个开源的应用容器运行环境搭建平台&#xff0c;可以让开发者以便捷方式打包应用到一个可移植的容器中&#xff0c;然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机&#xff0c;Docker容器提供轻量化的…

什么是容器云?

作者&#xff1a;宝哥devops运维 链接&#xff1a;http://t.cn/ECwSNgj 容器技术是近几年云行业发展中不可缺少的一环。Docker和k8s的大热极大可能会推动云计算PAAS层的完善和普及。那么容器云到底是怎样的技术形态&#xff1f;究竟是概念还是可落地的应用&#xff1f;在这篇…

容器和镜像的区别

这篇文章希望能够帮助读者深入理解Docker的命令&#xff0c;还有容器&#xff08;container&#xff09;和镜像&#xff08;image&#xff09;之间的区别&#xff0c;并深入探讨容器和运行中的容器之间的区别。 当我对Docker技术还是一知半解的时候&#xff0c;我发现理解Doc…

Docker容器

什么是 Docker&#xff1f;为什么会有 Docker&#xff1f;Docker 的优势&#xff1f; 为什么会有 Docker&#xff1f; 我们知道一款产品从开发到上线&#xff0c;从开发环境到生成环境。作为开发和运维人员之间协作需要考虑很多问题&#xff0c;尤其是当我们的产品多版本迭代之…

搞懂什么是容器?

操作系统是如何管理进程的 进程的特点&#xff1a; 可以相互通信&#xff1a;具有高级权限的进程可以攻击其他进程共享同一份文件系统&#xff1a;&#xff08;1&#xff09;进程可以对已有的进程进行增删改查&#xff0c;也就意味着高级进程可以将其他应用所需要的进程删掉&…

通俗讲解:什么是容器?为什么我们要使用它?

作为程序员&#xff0c;让我们回忆我们每天从事的熟悉得不能再熟悉的软件开发工作&#xff1a; 在本地搭好开发环境&#xff0c;进行开发工作&#xff0c;完了进行单元测试&#xff0c;把开发好的代码部署到测试系统&#xff0c;重复测试&#xff0c;最后部署到生产系统。 我们…

容器化技术概述

容器技术概述 一、什么是容器&#xff1f; 容器这个词&#xff0c;当你第一眼看它或许脑子里是这东西&#xff1a;瓶瓶罐罐、装水、装其他东西的玩意。 不管是什么&#xff0c;总体来说&#xff0c;容器给人第一印象就是——“装”。 那今天我们要说的容器技术是怎么一个概念呢…

Docker学习(一):容器介绍

一、什么是容器 1、容器是一种轻量级、可移植、自包含的软件打包技术&#xff0c;使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己的笔记本上创建并测试好的容器&#xff0c;无需任何修改就能够在生产系统的虚拟机、或物理服务器、或公有云主机上运行。 2、容器…

容器基本概念

本节课程要点 什么是容器与镜像&#xff1f;如何构建容器与镜像容器的生命周期容器项目的架构容器 VS.VM 容器与镜像 什么是容器&#xff1f; 在介绍容器的具体概念之前&#xff0c;先简单回顾一下操作系统是如何管理进程的。 首先&#xff0c;当我们登录到操作系统之后&a…

走进波分 -- 15.Optix OSN1800产品介绍

用于城域接入/汇聚层。 盘纤盒&#xff0c;可容纳40根光纤&#xff0c;内部容纳光纤总长度50米 透过内置盘纤盒&#xff0c;构成一体化模块 一个DCM插框可以按照2个DCM模块 直流配电盒&#xff0c;用于安装在机柜上方&#xff0c;给设备供电。AB两部分&#xff0c;互为备份 O…

【PyTorch】Optim 优化器

文章目录 五、Optim 优化器1、SGD 五、Optim 优化器 参考文档&#xff1a;https://pytorch.org/docs/stable/optim.html 1、SGD 参考文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.optim.SGD.html#torch.optim.SGD import torch.optim import torchvisio…

OptioMenu

#OpionMenu.py(可选菜单) from tkinter import *def ok ():print(value is,v.get())root.quit()rootTk() root.geometry(300x300280280)vStringVar(root) v.set(Python)omOptionMenu(root,v,Python,PHP,CPP,C,Java,JavaScript,VBScript) om.pack() buttonButton(root,textOK,co…

Optix7文档阅读(二):基本概念

2. 基本概念和定义 2.1. Program In NVIDIA OptiX 7, a program is a block of executable code on the GPU that represents a particular shading operation. This is called a shader in DXR and Vulkan. For consistency with prior versions of NVIDIA OptiX 7, the ter…

初次尝试OpitX +CMake

** 初次尝试OptiX CMake ** 首先安装好cuda、vs、OptiX和CMake 在OptiX的SDK文件&#xff08;C:\ProgramData\NVIDIA Corporation\OptiX SDK 7.1.0\SDK&#xff09;中找到CMakeLists.txt &#xff0c;将其拖入CMake中&#xff0c;在CMake点击Configure &#xff0c;完成后点…

Instant-ngp Windows11安装、使用记录

Instant NeRF - Study&Debug 本机配置 Y9000P RTX3060 Win11 Instant NeRF - Study&Debug1. Git2. Cmake3. instant-ngp示例数据自定义数据注意事项问题疑惑 1. Git 正常下载安装&#xff0c;启动Git Bash 设置用户名 $ git config --global user.name "**&q…

Houdini17 OptiX Denoise使用

Houdini17 OptiX Denoise使用 NVIDIA Optx Denoiser第一步 下载安装第二步 启用第三步 打开面板中的按钮一句卧槽走天下&#xff01; NVIDIA Optx Denoiser NVIDIA Optx Denoiser是一个后处理的算法&#xff0c;在Houdini17中可以被开启使用 第一步 下载安装 点击 Render/ D…

HTML中option和input的区别,option

手机评站网今天精心准备的是《option》&#xff0c;下面是详解&#xff01; option键是哪一个&#xff1f; 我的键盘上没有option字样的键&#xff0c;请问它指的是哪一个&#xff1f;&#xff1f;... 我的键盘上没有option字样的键&#xff0c;请问它指的是哪一个&#xff1f;…

十四、OPTIM

一、torch.optim torch.optim.Optimizer(params, defaults)优化器官网说明 由官网给的使用说明打开看出来优化器实验步骤&#xff1a; ①构造选择优化器 例如采用随机梯度下降优化器SGD torch.optim.SGD(beyond.parameters(),lr0.01)&#xff0c;放入beyond模型的参数param…