Javase | 集合-上

news2025/1/17 1:06:56

目录:

  • 一、集合:
    • 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集合中的元素可以自动排序,成为有序集合。放到该集合中的元素是自动按照大小顺序排序的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1016193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国内AI语言大模型【星火】各类模块及部分功能使用方法介绍

一、前言 现在AI语言大模型是百花齐放,挺好!有竞争,有发展,才能推出更好的产品。现在,科大讯飞就推出了大语言模型——星火!能够学习和理解人类的语言,进行多轮对话,回答问题,高效便捷地帮助人们获取信息、知识和灵感。星火在对话栏设置了三个插件:文档回答、PPT生成…

Java中transient关键字的详细总结

Java中transient关键字的详细总结 概要介绍 本文要介绍的是Java中的transient关键字&#xff0c;transient是短暂的意思。对于transient 修饰的成员变量&#xff0c;在类的实例对象的序列化处理过程中会被忽略。 因此&#xff0c;transient变量不会贯穿对象的序列化和反序列化…

C2基础设施威胁情报对抗策略

威胁情报是指在信息安全和安全防御领域&#xff0c;收集、分析和解释与潜在威胁相关的信息&#xff0c;以便预先发现并评估可能对组织资产造成损害的潜在威胁&#xff0c;是一种多维度、综合性的方法&#xff0c;其通过信息的收集、分析和研判&#xff0c;帮助组织了解可能对其…

Linux学习第11天:字符设备驱动开发:一字一符总见情

本文是驱动开发的第一篇笔记。主要内容是字符设备驱动开发最基础的内容&#xff0c;主要包括字符设备的概念、开发步骤以及一个十分重要的概念&#xff1a;设备号。其思维导图能简单的显示本文的基本框架&#xff0c;如下&#xff1a; 一、字符设备 字符设备就是一个一个字节&a…

MySQL注入绕安全狗脚本 -- MySQLByPassForSafeDog,以及端口爆破工具 -- PortBrute配置使用

工具介绍 此Tamper仅仅适用于MySQL数据库&#xff0c;在SQLMap使用过程中添加参数–tamperMySQLByPassForSafeDog。 安装与使用 1、安装网站安全狗Apache最新版 2、启用安全狗&#xff0c;不加MySQLByPassForSafeDog绕狗Tamper: python sqlmap.py -u "http://192.168.…

又一个Python调试利器

迷途小书童 读完需要 5分钟 速读仅需 2 分钟 1 简介 在编程过程中&#xff0c;几乎难以避免的会出现错误。事实上&#xff0c;程序员为了消除错误&#xff0c;要花费大量的时间在代码调试上。在调试过程中&#xff0c;使用 print() 语句来理解程序流程和发现意外行为无疑是最常…

iOS系统暗黑模式

系统暗黑模式&#xff1a; 暗黑模式颜色适配&#xff1a; 方式1&#xff1a; Assets配置&#xff1a;在Assets中配置好颜色后&#xff0c;可以通过colorNamed: 放大获取到动态颜色。 方式2&#xff1a;代码配置&#xff0c;通过代码colorWithDynamicProvider: 可以看出来生成…

C语言指针进阶(2)

大家好&#xff0c;我们今天继续来分享指针进阶的内容。 目录 5.函数指针 6.函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 5.函数指针 顾名思义函数指针里面存的就是函数的地址了。 那我们通过一段代码来理解函数指针&#xff1a; #include<stdio.h> int Add…

向日葵无法连接服务器(无法登录)

最近在使用向日葵过程中&#xff0c;突然就不能登录向日葵了&#xff0c;网上查了各种解决方案&#xff0c;比如说防火墙是不是把向日葵给拦截了&#xff1f;更换不同的版本等等&#xff0c;都无法解决&#xff0c;最后突然想到是不是电脑对向日葵原安装目录限制了&#xff1f;…

创建表

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 创建表 语法格式: create table 表名(列名1 数据类型,列名2 数据类型,... ,列名n, 数据类型 ); 练习:在czwbkl库中,创建一格test01表 跟大家说…

windows下C++的反射功能

概述 c/c如果在日志中查看某个结构体/类的每个变量名&#xff0c;变量值信息&#xff0c;只能通过printf逐个格式化&#xff0c;非常繁琐&#xff0c;如何做到类似protobuff转json的序列化功能呢&#xff1f;该dll库先通过分析pdb文件获取结构体/类的变量名称、变量地址&#…

WebGL 从0到1绘制一个立方体

目录 前言 组成立方体的面、三角形、顶点坐标和顶点颜色 通过顶点索引绘制物体 gl.drawElements(mode, count, type, offset) 函数规范 示例程序 彩色立方体&#xff08;HelloCube.js&#xff09; 代码详解 向缓冲区中写入顶点的坐标、颜色与索引 gl.ELEMENT_ARRAY_B…

RFID产线自动化升级改造管理方案

应用背景 在现代制造业中&#xff0c;产线管理是实现高效生产和优质产品的关键环节&#xff0c;产线管理涉及到生产过程的监控、物料管理、工艺控制、质量追溯等多个方面&#xff0c;有效的产线管理可以提高生产效率、降低成本、改善产品质量&#xff0c;并满足市场需求的变化…

elasticsearch1

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

iText实战--在现有PDF上工作

6.1 使用PdfReader读取PDF 检索文档和页面信息 D:/data/iText/inAction/chapter03/image_direct.pdf Number of pages: 1 Size of page 1: [0.0,0.0,283.0,416.0] Rotation of page 1: 0 Page size with rotation of page 1: Rectangle: 283.0x416.0 (rot: 0 degrees) Is reb…

重新认识架构—不只是软件设计

前言 什么是架构&#xff1f; 通常情况下&#xff0c;人们对架构的认知仅限于在软件工程中的定义&#xff1a;架构主要指软件系统的结构设计&#xff0c;比如常见的SOLID准则、DDD架构。一个良好的软件架构可以帮助团队更有效地进行软件开发&#xff0c;降低维护成本&#xff0…

C# 查找迷宫路径

1.导入图像&#xff0c;并且将图像转灰度 using var img new Image<Bgr, byte>(_path); using var grayImg img.Convert<Gray, byte>(); 2.自动二值化图像 using var inputGrayOut new Image<Gray, byte>(grayImg.Size); // 计算OTSU阈值 var threshol…

【图像处理】VS编译opencv源码,并调用编译生成的库

背景 有些时候我们需要修改opencv相关源码&#xff0c; 这里介绍怎么编译修改并调用修改后的库文件。 步骤 1、下载相关源码工具&#xff1a; 下载opencv4.8源码并解压 https://down.chinaz.com/soft/40730.htm 下载VS2019&#xff0c;社区版免费 https://visualstudio.micro…

【C++】动态规划题目总结(随做随更)

文章目录 一. 斐波那契数列模型1. 第 N 个泰波那契数2. 三步问题3. 使用最小花费爬楼梯解法一&#xff1a;从左往右填表解法二&#xff1a;从右往左填表 一. 斐波那契数列模型 解题步骤&#xff1a; 确定状态表示&#xff08;最重要&#xff09;&#xff1a;明确dp表里的值所…

用Jmeter进行压测详解

简介&#xff1a; 1.概述 一款工具&#xff0c;功能往往是很多的&#xff0c;细枝末节的地方也很多&#xff0c;实际的测试工作中&#xff0c;绝大多数场景会用到的也就是一些核心功能&#xff0c;根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲…