当前位置: 首页 > news >正文

Javase | 集合-上

目录:

  • 一、集合:
    • 1.集合的概述
    • 2.集合的分类
  • 二、“单个方式”存储元素:
    • 1.Collection
      • 1.1 Collection的概述
      • 1.2 Collection接口中常用的方法
        • Iterator<T> iterator( )
      • 1.3 Collection下的子接口
    • 2.Iterable:
      • 2.1 Iterable的概述
      • 2.2 Iterable接口中常用的方法
        • Iterator\<T> iterator( )
    • 3.Iterator:
      • 3.1 Iterator的概述
      • 3.2 Iterator接口中常用的方法
        • boolean hasNext( )
        • T next( )
        • void remove( )
    • 4.List:
      • 4.1 List集合的特点
      • 4.2 List集合常用的“实现类”:
        • ArrayList (实现类)
        • LinkedList (实现类)
        • Vector (实现类)
    • 5.Set
      • 5.1 Set集合的特点
      • 5.2 Set集合常用的“实现类”
        • HashSet (实现类)
        • TreeSet (实现类)
      • 5.3 Set集合下的"子接口"
        • SortedSet

一、集合:

1.集合的概述

  • 集合实际上就是一个容器,可以来 容纳其他类型的数据

  • 集合是一个载体,可以 一次容纳多个对象集合中存储的是 引用数据类型

  • 集合 不能 直接存储基本数据类型,集合也 不能 直接存储java对象集合中存储的都是java对象内存地址。(集合中存储的是引用

    在这里插入图片描述

  • 在实际开发中,假设连接数据库,数据库中有10条记录,假设把10条记录查询出来,在java程序会将10条数据封装成java对象,然后将java对象放进某个集合中, 将集合传到前端,然后遍历集合,将一个一个数据展现出来。 集合在这一过程中起到承载的作用

  • 使用不同的集合等于使用不同的数据结构
    java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到不同的数据结构 ( 数据存储的结构 ) 中,不同的数据结构,数据存储的方式不同。 如:数组、二叉树、链表、哈希表 这些都是常见的数据结构。

    new ArrayList();  //创建一个集合,底层是“数组”。
    new LinkedList(); //创建一个集合,底层是“链表”。
    new TreeSet();    //创建一个集合,底层是“二叉树”。
    

2.集合的分类

  • Java中 集合分类两大类:①以 单个方式 存储元素。 ②以 键值对 的方式存储元素。

  • 单个方式 存储元素 :

单个方式”存储元素,这“一类集合”的超级父接口是 : Collection
(拓展:Collection接口本身的父接口Iterable

  • 键值对方式 存储元素:

    以“键值对”方式存储元素,这一类集合中超级父接口:java.util.Map

二、“单个方式”存储元素:

1.Collection

1.1 Collection的概述

  • Collection : 是一个接口

  • Collection : 是以“单个方式”存储元素的 这一类集合超级父接口

  • Collection 接口本身也是有父接口的,其的父接口是: Iterable接口。

  • 可通过调用 iterator( )方法获得 迭代器 对象,获得迭代器对象的目的迭代/遍历 集合中的元素。

  • Collectioniterator关联关系

在这里插入图片描述

1.2 Collection接口中常用的方法

Iterator iterator( )

  • Iterator iterator( ) : 调用该iterator( )方法能返回一个 Iterator (迭代器)对象。获得迭代器对象目的迭代/遍历 集合中的元素。
  • 本质上:iterator( )方法是 Iterable接口中的方法,因Collection接口继承了Iterable接口,所以Collection也能调用该方法

1.3 Collection下的子接口

  • Collection下的子接口有 :ListSet 等。

  • List、Set接口下有对应的实现类

2.Iterable:

2.1 Iterable的概述

  • Iterable : 是一个接口Iterable 接口是 Collection 接口的 父接口
  • Iterable:可 迭代 的、可 遍历 的,所有集合继承Iterable的含义是:所有集合都是可迭代的。

2.2 Iterable接口中常用的方法

Iterator<T> iterator( )

  • Iterator iterator( ) : 调用该 iterator( ) 方法能返回一个 Iterator (迭代器)对象
  • iterator( )方法是Iterable接口本身拥有的方法。

3.Iterator:

3.1 Iterator的概述

  • Iterator: 是一个接口Iterator集合迭代器对象
  • Iterator作为迭代器对象,其作用是:迭代/遍历集合

3.2 Iterator接口中常用的方法

boolean hasNext( )

  • boolean hasNext( ) : 如果仍有元素可以迭代,则返回 true。

T next( )

  • T next( ) : 返回迭代的下一个元素。

void remove( )

  • void remove( ) :从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

4.List:

4.1 List集合的特点

  • List集合存储元素特点

    1.有序有序说的是: 存进来是这个顺序取出来也是这个顺序。(先进先出)。有序是因为List集合有下标,下标从0开始,以1递增。

    2.可重复。集合中元素 重复出现

    3.存储的元素 “有” 下标。下标从0开始以1递增

  • 在这里插入图片描述

4.2 List集合常用的“实现类”:

ArrayList (实现类)

  • ArrayList集合底层采用了 数组 这种数据结构
  • ArrayList非线程安全 的。

LinkedList (实现类)

  • LinkedList集合底层采用了“双向链表”这种数据结构

Vector (实现类)

  • Vector集合底层采用了 数组 这种数据结构
  • Vector线程安全 的。Vector所有的方法都有 synchronized 关键字修饰,所以是线程安全的,但是效率太低,现在保证线程安全有别的方案,Vector使用较少了。

在这里插入图片描述

5.Set

5.1 Set集合的特点

  • Sett集合存储元素特点

    1.无序无序说的是:无序表示存进去是这个顺序取出来就不一定是这个顺序了。

    2.不可重复。集合中元素 不可重复出现

    3.存储的元素 “没有” 下标

在这里插入图片描述

5.2 Set集合常用的“实现类”

HashSet (实现类)

  • HashSet类Set接口实现类
  • 实际上HashSet集合new的时候,底层实际上new了一个HashMap集合。向HashSet存储元素,实际上存储到HashMap集合中。
  • HashMap集合是一个哈希表数据结构

TreeSet (实现类)

  • TreeSet类是SortedSet接口实现类
  • TreeSet集合 底层 实际上是 TreeMap。new TreeSet集合时,底层实际上new了一个TreeMap集合,往TreeSet集合中放数据时,实际上是将数据放到TreeMap集合中。
  • TreeMap集合底层采用了 “二叉树” 数据结构。

在这里插入图片描述

5.3 Set集合下的"子接口"

SortedSet

  • SortedSet集合存储元素的特点
    由于继承了Set集合,所以它的特点是:也是 无序不重复,但是放在SortedSet集合中的元素可以自动排序,成为有序集合。放到该集合中的元素是自动按照大小顺序排序的

相关文章:

Javase | 集合-上

目录&#xff1a; 一、集合&#xff1a;1.集合的概述2.集合的分类 二、“单个方式”存储元素&#xff1a;1.Collection1.1 Collection的概述1.2 Collection接口中常用的方法Iterator<T> iterator( ) 1.3 Collection下的子接口 2.Iterable&#xff1a;2.1 Iterable的概述2…...

Multitor:一款带有负载均衡功能的多Tor实例创建工具

关于Multitor Multitor是一款带有负载均衡功能的多Tor实例创建工具&#xff0c;Multitor的主要目的是以最快的速度完成大量Tor进程的初始化&#xff0c;并将大量实例应用到我们日常使用的程序中&#xff0c;例如Web浏览器和聊天工具等等。除此之外&#xff0c;在该工具的帮助下…...

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto 学习前言Aliyun DSW快速拉起&#xff08;新用户有三个月免费时间&#xff09;1、拉起DSW2、运行Notebook3、一些小bug AutoDL快速拉起1、拉起AutoDL2、运行Notebook 学习前言 快速拉起AIGC服务 对 用户体…...

Mysql的逻辑架构、存储引擎

1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构&#xff0c;即Clinet/Server 架构&#xff0c;服务端程序使用的mysqld。 不论客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果是&#xff1a;客户端进程向服务器进程发送一段文…...

[ES6]模块

[ES6]模块 特点export 与 import基本用法导入导出基本方式导入导出等价方式html 导入 别名导出默认导出基本用法默认导出对象 复合使用import 命令的特点只读属性单例模式静态执行特性 在 ES6 前&#xff0c; 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模…...

物联网终端算法

物联网终端算法是指在物联网终端设备上运行的各种算法&#xff0c;包括数据采集、数据预处理、数据传输、数据存储、数据处理、数据分析等算法。以下是物联网终端算法的一些具体应用&#xff1a; 数据采集算法&#xff1a;用于采集各种传感器数据&#xff0c;包括温度、湿度、气…...

【面试刷题】——TCP三次握手,以及为什么要三次握手

TCP&#xff08;传输控制协议&#xff09;的三次握手是建立TCP连接的过程&#xff0c;它确保了通信双方的正常启动和参数协商。三次握手的过程如下&#xff1a; 客户端发送请求&#xff1a; 客户端首先向服务器发送一个特殊的TCP报文&#xff0c;称为SYN&#xff08;同步&…...

算法系列-力扣206-单链表反转

题目说明 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 方法一&#xff1a;头插法反转链表 思路&#xff1a; 声明p指针指向原头节点&#xff0c;并将头节点置空&#xff1b;p指针循环原链表将元素用头节点插入法逐个插入head中&…...

网络基础-应用层协议-HTTP/HTTPS

HTTP/HTTPS HTTP基本概念协议格式请求报文请求方法请求资源地址协议版本 应答报文 常见Header常见状态码与状态描述Cookie&Sessionhttp协议特点 HTTPS基本概念对称加密与非对称加密数据摘要&数据指纹HTTPS工作过程探究只采用对称加密只采用非对称加密双方都采用非对称加…...

problen(5)ubuntu版本问题

浅浅记录一下这段时间的血和泪吧&#xff0c;大概耗时快一个月了吧&#xff0c;终于解决了...... 因为需要开启pwn之旅&#xff0c;需要在Ubuntu上安装一些东西&#xff0c;就是下面的一条命令&#xff1a; sudo pip3 install pwntools -i Simple Index&#xff08;显示不太好了…...

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…...

rhel8防火墙firewalld操作

1.查看默认区域 [rootlocalhost r]# firewall-cmd --get-default-zone public2.查看网卡关联的区域 [rootlocalhost r]# firewall-cmd --get-zone-of-interfaceifcfg-ens160 external 3.设置网卡的默认区域修改为work [rootlocalhost r]# firewall-cmd --zonework --change…...

OpenCV项目实战(2)— 如何用OpenCV实现弹球动画

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。OpenCV能够在画布上绘制静态的图形&#xff0c;例如&#xff0c;线段、矩形、正方形、圆形、多边形、文字等。那么&#xff0c;能不能让这些静态的图形移动起来&#xff1f;如果能&#xff0c;又该如何编写代码呢&#xff…...

golang iris框架 + linux后端运行

go mod init myappgo get github.com/kataras/iris/v12latestpackage mainimport "github.com/kataras/iris/v12"func main(){app : iris.New()app.Listen(":port") }打包应用 go build main.go开启服务 #nohup ./程序名称 nohup ./main关闭后台 #ps -e…...

linux shell操作- 02 常用命令及案例

文章目录 常用命令 续 常用命令 续 定时任务 通过文本编辑cron任务&#xff0c;实现定时操作 分 小时 天 月 星期 绝对路径sh or cmd* 表示每个xxx&#xff0c;如每个小时每小时的第三分钟执行cmd-> 03 * * * * /home/lauf/scraw.sh每天的第5、8个小时执行-> 00 5,8 * *…...

考研408 | 【计算机组成原理】 数据的表示和运算

进位计数制 十进制计数法&#xff1a; 推广&#xff1a;r进制计数法 任意进制-->十进制&#xff1a; 二进制<-->八进制、十六进制&#xff1a; 各种进制的常见书写方式&#xff1a; 十进制-->任意进制&#xff1a; 十进制-->二进制&#xff08;拼凑法&#xff…...

【小沐学NLP】AI辅助编程工具汇总

文章目录 1、简介2、国内2.1 aiXcoder2.1.1 工具特点2.1.2 部署方式2.1.3 使用费用2.1.4 代码测试2.1.4.1 代码搜索引擎2.1.4.2 在线体验 2.2 CodeGeeX2.2.1 工具特点2.2.2 部署方式2.2.3 使用费用2.2.4 代码测试 2.3 Alibaba Cloud AI Coding Assistant&#xff08;cosy&#…...

linux动态扩容系统盘(非lvm磁盘)

查看磁盘状态 执行df -Th查看磁盘情况 [rootiotdbtest1 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 7.7G 0 7.7G 0% /dev tmpfs tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs tmpfs …...

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…...

Day46:项目-购物车案例

购物车案例 准备工作 首页默认加载&#xff0c;其余页面懒加载 调用defineStore方法构建store 入口main做对应配置&#xff0c;找指南&#xff0c;快速开始&#xff0c;把elementplus引入进来 import { createApp } from "vue"; import { createPinia } from &qu…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...