【Java】集合框架-简介【主线学习笔记】

news2025/1/7 7:26:31

文章目录

  • 前言
  • 一. 数组存储
    • 优点:
    • 弊端:
  • 二. Java集合框架体系(java.util包下)
    • 1. 集合与数组的相互转换
    • 2. Collection 接口
      • 常见方法:
      • 向 Collection 中添加元素的要求
  • 三. 迭代器(iterator)
    • 1. 使用方法
    • 2. 增强for循环(foreach循环)


前言

Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。


一. 数组存储

优点:

  1. 固定长度:数组一旦初始化,长度即确定,不可更改。例如:

  2. 元素有序、紧密排列:数组中的元素按顺序存储,且元素在内存中是连续的。元素是有序的、按索引访问,且可以重复。

  3. 类型确定:数组一旦初始化,其元素类型即确定,且数组只能存储相同类型的元素。若尝试存储不同类型的数据,编译时会报错。例如:

  4. 元素类型多样性:数组可以存储基本数据类型(如 intdouble 等)或引用数据类型(如对象、字符串等)。例如:

弊端:

  1. 固定长度:一旦数组初始化,长度不可变,无法动态调整,可能导致空间浪费或容量不足的情况。

  2. 单一数据特点:数组中的元素必须是相同类型的,无法适应一些无序、不可重复的数据场景。例如,无法处理具有不同属性的数据集合。

  3. 方法和属性有限:数组本身只提供了一些基本操作(如访问元素、修改元素等),没有像集合类(如 ArrayList)那样丰富的方法和属性。在需求复杂的情况下,开发者需要自己编写额外的代码逻辑来满足特定功能。

  4. 针对数组中元素的删除、插入操作,性能较差。

二. Java集合框架体系(java.util包下)

  1. java.util.Collection 接口:存储一个或多个元素的数据结构集合的根接口。
    List 接口存储有序且可重复的数据。元素按插入顺序排列,可以包含重复元素。实现类有: ArrayList:基于动态数组实现,支持快速随机访问,但在中间插入和删除性能较差。 LinkedList:基于双向链表实现,支持高效的插入和删除操作,但随机访问性能较差。 Vector:与 ArrayList类似,但 Vector是线程安全的,通常不推荐使用,因为性能较低。
    Set 接口存储无序且不可重复的数据。集合中没有重复元素。实现类有: HashSet:基于哈希表实现,元素无序且不重复,查找速度快。LinkedHashSet:基于哈希表和链表实现,保持插入顺序,但元素仍不可重复。TreeSet:基于红黑树实现,存储元素时会进行排序,因此元素是有序的。

  2. java.util.Map 接口存储一对一对(键值对)数据的集合,键和值是不同的数据类型。 实现类有:HashMap:基于哈希表实现,存储键值对,键是唯一的,无序存储;LinkedHashMap:继承自 HashMap,保持插入顺序或访问顺序;TreeMap:基于红黑树实现,按键的自然顺序或指定的比较器顺序进行排序;Hashtable:与 HashMap 类似,但 Hashtable是线程安全的,通常不推荐使用;Properties:继承自 Hashtable,用于存储键值对,常用于读取配置文件等场景,键和值都是字符串类型。

1. 集合与数组的相互转换

  1. 集合 → 数组:使用 toArray() 方法。
  2. 数组 → 集合:使用 Arrays.asList() 方法。

2. Collection 接口

常见方法:

  1. add(E e):向集合中添加元素。
  2. remove(Object o):从集合中移除指定元素。
  3. contains(Object o):检查集合是否包含某个元素。
  4. size():返回集合中元素的个数。
  5. isEmpty():检查集合是否为空。
  6. clear():清空集合中的所有元素。
  7. toArray():将集合转换为数组。

向 Collection 中添加元素的要求

要求:元素类必须重写 equals() 方法。
原因:Collection 的方法(如 contains() 和 remove())依赖 equals() 判断元素是否相同。当判断是否含有某元素的到时候,要调用该元素所属类的equals方法。

class Person {
    String name;
    int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && name.equals(person.name);
    }
}

三. 迭代器(iterator)

作用:用来遍历集合元素。

1. 使用方法

获取迭代器对象:

Iterator iterator = coll.iterator();

实现遍历的方法:

Collection coll = new ArrayList();
coll.add("AA");
coll.add("AA");
Person p1 = new Person("zhangsan");
coll.add(p1);
coll.add(123);
coll.add(new String(("zhangsan")));
Iterator iterator = coll.iterator();
for (int i = 0; i < coll.size(); i++) {
            System.out.println(iterator.next());
        }

或者

while (iterator.hasNext()){
    //next()作用:指针下移;将下移以后集合位置上的元素返回 
    System.out.println(iterator.next());
}

2. 增强for循环(foreach循环)

作用:遍历数组、集合
注意:增强for循环的执行过程中,是将集合或数组中的元素依次赋值给临时变量,注意,循环体中对临时变量的修改,可能不会导致原有集合或数组中元素的修改。

格式:
遍历集合,针对集合来讲,增强for循环底层仍然是使用的迭代器

for (Object obj : coll){
    System.out.println(obj);
}

遍历数组

public void test2(){
    int[] arr = new int[]{1,2,3,4,5};
    for(int i:arr){
        System.out.println(i);
    }
}

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

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

相关文章

iOS 11 中的 HEIF 图像格式 - 您需要了解的内容

HEIF&#xff0c;也称为高效图像格式&#xff0c;是iOS 11 之后发布的新图像格式&#xff0c;以能够在不压缩图像质量的情况下以较小尺寸保存照片而闻名。换句话说&#xff0c;HEIF 图像格式可以具有相同或更好的照片质量&#xff0c;同时比 JPEG、PNG、GIF、TIFF 占用更少的设…

【MATLAB APP Designer】小波阈值去噪(第一期)

代码原理及流程 小波阈值去噪是一种信号处理方法&#xff0c;用于从信号中去除噪声。这种方法基于小波变换&#xff0c;它通过将信号分解到不同的尺度和频率上来实现。其基本原理可以分为以下几个步骤&#xff1a; &#xff08;1&#xff09;小波变换&#xff1a;首先对含噪信…

NCCL源码解读3.1:double binary tree双二叉树构建算法,相比ring环算法的优势

目录 一、双二叉树出现的原因 二、双二叉树介绍 三、双二叉树大规模性能 四、双二叉树源码解读 双二叉树注意事项 核心逻辑 源码速递 视频分享在这&#xff0c;未完待补充&#xff1a; 3.1 NCCL源码解读双二叉树构建算法&#xff0c;double binary tree相比ring环算法的…

Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】

文章目录 部署项目一.安装jdk1.1 官网下载jdk81.2 上传到Linux1.3 解压1.4 配置环境变量1.5 查看是jdk是否安装成功 二.安装TomCat2.1 官网下载2.2 上传到Linux2.3 解压2.4配置2.5 启动Tomcat2.6 验证是否成功 三.安装mysql四.部署javaweb项目4.1 打包4.2 启动tomcat 部署项目 …

unity中的UI系统---GUI

一、工作原理和主要作用 1.GUI是什么&#xff1f; 即即时模式游戏用户交互界面&#xff08;IMGUI&#xff09;&#xff0c;在unity中一般简称为GUI&#xff0c;它是一个代码驱动的UI系统。 2.GUI的主要作用 2.1作为程序员的调试工具&#xff0c;创建游戏内调测试工具 2.2为…

MySQL 【多表查询】

一 . 概述 多表关系&#xff1a; 一对多(多对一) &#xff0c; 多对多 &#xff0c;一对一 1&#xff09; 一对一 案例: 用户 与 用户详情的关系 关系: 一对一关系&#xff0c;多用于单表拆分&#xff0c;将一张表的基础字段放在一张表中&#xff0c;其他详情字段放在另 一张表…

【大模型】ChatGPT 数据分析与处理使用详解

目录 一、前言 二、AI 大模型数据分析介绍 2.1 什么是AI数据分析 2.2 AI数据分析与传统数据分析对比 2.2.1 差异分析 2.2.2 优劣势对比 2.3 AI大模型工具数据分析应用场景 三、AI大模型工具数据分析操作实践 3.1 ChatGPT 常用数据分析技巧操作演示 3.1.1 快速生成数据…

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…

【Java项目】基于SpringBoot的【新生宿舍管理系统】

【Java项目】基于SpringBoot的【新生宿舍管理系统】 技术简介&#xff1a;本系统使用采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;管理员登录进入新生宿舍管理系统可以查看首页、个人中心、公告信息管理、院系管理、班级管理、学生管理、宿舍…

【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA

前面文章&#xff1a; 《Transformer深入学习&#xff08;一&#xff09;&#xff1a;Sinusoidal位置编码的精妙》 一、MHA、MQA、GQA 为了降低KV cache&#xff0c;MQA、GQA作为MHA的变体&#xff0c;很容易理解。 多头注意力&#xff08;MHA&#xff09;&#xff1a; 多头注…

IP5385应用于移动电源快充方案的30W到100W大功率电源管理芯片

英集芯IP5385一款专为智能手机&#xff0c;平板&#xff0c;移动电源&#xff0c;手持电动工具等便携式电子设备提供快充解决方案的30W到100W大功率电源管理SOC芯片。集成了快充协议芯片、MCU、同步升降压控制器等多种功能于一个封装内部&#xff0c;有效减小了整体方案的尺寸。…

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…

.Net加密与Java互通

.Net加密与Java互通 文章目录 .Net加密与Java互通前言RSA生成私钥和公钥.net加密出数据传给Java端采用java方给出的公钥进行加密采用java方给出的私钥进行解密 .net 解密来自Java端的数据 AES带有向量的AES加密带有向量的AES解密无向量AES加密无向量AES解密 SM2(国密)SM2加密Sm…

西安电子科技大学初/复试笔试、面试、机试成绩占比

西安电子科技大学初/复试笔试、面试、机试成绩占比 01通信工程学院 02电子工程学院 03计算机科学与技术学院 04机电工程学院 06经济与管理学院 07数学与统计学院 08人文学院 09外国语学院 12生命科学与技术学院 13空间科学与技术学院 14先进材料与纳米科技学院 15网络与信息安…

服务器信息整理

文章目录 引言I BIOS时间Windows查看BIOS版本安装日期linux查看BIOS时间II 操作系统安装日期LinuxIII MAC 地址IV 设备序列号Linux 查看主板信息引言 信息内容:重点信息:用途、操作系统安装日期、设备序列化、IP、MAC地址、BIOS时间、系统 Linux查看工具:ifconfig、宝塔运维…

关于PINN进一步的探讨

pinn 是有监督、无监督、半监督&#xff1f; PINN&#xff08;Physics-Informed Neural Networks&#xff0c;物理信息神经网络&#xff09;通常被归类为一种有监督学习的方法。在PINN中&#xff0c;神经网络的训练过程不仅依赖于数据点&#xff08;例如实验观测数据&#xff0…

Linux-Ubuntu之I2C通信

Linux-Ubuntu之I2C通信 一&#xff0c;I2C通信原理1.写时序2.读时序 二&#xff0c;代码实现三&#xff0c;显示 一&#xff0c;I2C通信原理 使用I2C接口驱动AP3216C传感器&#xff0c;该传感器能实现两个效果&#xff0c;一个是感应光强&#xff0c;另一个是探测物体与传感器…

Trimble天宝X9三维扫描仪为建筑外墙检测提供了全新的解决方案【沪敖3D】

随着城市化进程的快速推进&#xff0c;城市高层建筑不断增多&#xff0c;对建筑质量的要求也在不断提高。建筑外墙检测&#xff0c;如平整度和垂直度检测&#xff0c;是衡量建筑质量的重要指标之一。传统人工检测方法不仅操作繁琐、效率低下&#xff0c;还难以全面反映墙体的真…

主机A与主机B建立TCP连接的三次握手过程

&#xff08; 1 &#xff09;主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段&#xff08;第一次握手&#xff09;。&#xff08; 1 分&#xff09; &#xff08; 2 &#xff09;一旦包含 SYN 报文段的 IP 数据报到达主机 B &#xff0c; SYN 报文段被从数据报…