Java 集合基础

news2025/3/1 4:09:27

文章目录

    • 一、集合概念
    • 二、ArrayList
      • 1. 构造方法和添加方法
      • 2. 常用方法
    • 三、案例演示
      • 1. 存储字符串并遍历
      • 2. 存储学生对象并遍历
      • 3. 键盘录入学生对象并遍历

一、集合概念

编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需要,更适应不了变化的需求,此时就用到了集合。
集合类的特点:提供一种存储空间可变的存储模型。存储的数据容量可以发生改变。

集合类有很多,目前我们先学习一个:ArrayList。

二、ArrayList

ArrayList 是可调整大小的数组实现, 是一种特殊的数据类型,泛型。
怎么用呢?
在出现 E 的地方我们使用引用数据类型替换即可。
例如,ArrayList<String>,ArrayList<Student>。

1. 构造方法和添加方法

在这里插入图片描述

//创建一个空的集合对象
ArrayList<String> array = new ArrayList<>(); //后面ArrayList尖括号里面的数据类型可写可不写,系统会自动推断

//添加元素至集合末尾
array.add("hello");
array.add("world");
array.add("tyut");
System.out.println(array); //[hello, world, tyut]

//添加元素至指定索引处
array.add(1, "java"); //注意索引越界问题

2. 常用方法

在这里插入图片描述

array.remove("world");
array.remove(1);
array.set(1, "java");
array.get(0);
array.size();

三、案例演示

1. 存储字符串并遍历

需求:创建一个存储字符串的集合,存储 3 个字符串元素,使用程序实现在控制台遍历该集合。
① 遍历集合,首先要能够获取到集合中的每一个元素,这个通过 get(int index) 方法实现;
② 获取集合的长度,这个通过 size() 方法实现。

package com.zxe;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> array = new ArrayList<>();
        array.add("不要");
        array.add("迷恋");
        array.add("哥");
        for (int i = 0; i < array.size(); i++) {
            String s = array.get(i);
            System.out.println(s);
        }
    }
}

2. 存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储 3 个学生对象,使用程序实现在控制台遍历该集合。
① 定义学生类;
② 创建集合对象;
③ 创建学生对象;
④ 添加学生对象到集合中;
⑤ 遍历集合,采用通用遍历格式实现。

//学生类

package com.zxe;

public class Student {
    private String name;
    private int age;

    public Student() {}

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

//学生测试类

package com.zxe;

import java.util.ArrayList;

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> array = new ArrayList<>();
        Student s1 = new Student("张三", 17);
        Student s2 = new Student("李四", 19);
        Student s3 = new Student("王五", 13);
        array.add(s1);
        array.add(s2);
        array.add(s3);
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + ", " + s.getAge());
        }
    }
}

在这里插入图片描述

3. 键盘录入学生对象并遍历

与上面不同的是,这里的学生对象需要我们通过键盘输入。

package com.zxe;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> array = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入第" + (i + 1) + "个同学的姓名和年龄:");
            addStudent(array);
        }
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + ", " + s.getAge());
        }
    }

    public static void addStudent(ArrayList<Student> array) {
        Student student = new Student();
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
        int age = sc.nextInt();
        student.setName(name);
        student.setAge(age);
        array.add(student);
    }
}

在这里插入图片描述

学生类与上面一致,键盘录入多个学生信息,这里为了提高代码的复用性,我们用方法来改进程序。

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

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

相关文章

Axios二次封装和Api的解耦

目录 一、axios三种基本写法 二、axios的二次封装 三、Api的解耦 一、axios三种基本写法 1&#xff09;get方法&#xff08;是最简单的&#xff09;&#xff1a; 写法二&#xff1a; 2&#xff09;post&#xff1a; 3&#xff09;axios请求配置 默认是get请求&#xff0c;如…

数据分析-深度学习 NLP Day2关键词提取案例

训练一个关键词提取算法需要以下几个步骤&#xff1a;1&#xff09;加载已有的文档数据集&#xff1b;2&#xff09;加载停用词表&#xff1b;3&#xff09;对数据集中的文档进行分词&#xff1b;4&#xff09;根据停用词表&#xff0c;过滤干扰词&#xff1b;5&#xff09;根据…

C语言学习_DAY_5_循环结构while和for语句【C语言学习笔记】

高质量博主&#xff0c;点个关注不迷路&#x1f338;&#x1f338;&#x1f338;&#xff01; 目录 I. 案例引入 II. while语句 III. do while语句 IV. for语句 前言: 书接上回&#xff0c;判断结构已经解决&#xff0c;接下来是另一种很重要的结构&#xff1a;循环结构的实…

深入Spring底层透析后置处理器之豁然开朗篇

目录前言Spring的后置处理器Bean工厂后置处理器Bean后置处理器自定义Component实现注解开发前言 看这篇文章之前&#xff0c;需要了解Bean创建的过程&#xff0c;本篇文章是接着bean创建的基本流程的续写 Bean创建的基本过程&#xff1a;http://t.csdn.cn/1lK2d Spring的后置处…

Python3 命名空间和作用域实例及演示

命名空间 先看看官方文档的一段话&#xff1a; 命名空间(Namespace)是从名称到对象的映射&#xff0c;大部分的命名空间都是通过 Python 字典来实现的。 A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries…

凌恩生物经典文章:孟德尔诞辰200周年,Nature Genetics礼献豌豆高质量精细图谱

本期为大家分享的文章是2022年发表在《Nature Genetics》上的一篇文章“Improved pea reference genome and pan-genome highlight genomic features and evolutionary characteristics”&#xff0c;作者通过结合三代pacbio测序、染色体构象捕获&#xff08;Hi-C&#xff09;测…

Meta分析在生态环境领域里的应用

Meta分析&#xff08;Meta Analysis&#xff09;是当今比较流行的综合具有同一主题的多个独立研究的统计学方法&#xff0c;是较高一级逻辑形式上的定量文献综述。20世纪90年代后&#xff0c;Meta分析被引入生态环境领域的研究&#xff0c;并得到高度的重视和长足的发展&#x…

企业什么要建设自有即时通讯软件系统

随着科技的不断发展&#xff0c;各种即时通讯软件也不断发展进步&#xff0c;而这也与企业的发展息息相关&#xff0c;因为每个人&#xff0c;每个企业都有属于自己的机密&#xff0c;属于自己的隐私。 钉钉&#xff0c;企业微信&#xff0c;等公有的即时通讯软件给企业带来便利…

微信社区小程序/h5/圈子论坛贴吧交友/博客/社交/陌生人社交/宠物/话题/私域/同城交友

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 小程序/app/H5多端圈子社区论坛系统,交友/博客/社交/陌生人社交,即时聊天,私域话题,社区论坛圈子,信息引流小程序源码,广场/微校园/微小区/微同城/ 圈子论坛社区系统&#xff0c;含完整…

扬帆优配|3300点半日游!上证指数冲高回落;再迎重磅利好!

今天早盘&#xff0c;A股冲高回落&#xff0c;上证指数3300点得而复失&#xff0c;深证成指也于12000点无功而返。 盘面上&#xff0c;煤炭、钢铁、房地产、才智政务等板块涨幅居前&#xff0c;酿酒、酒店餐饮、日用化工、IT设备等板块跌幅居前。北上资金净流入7.77亿元。 房地…

UML中常见的9种图

UML是Unified Model Language的缩写&#xff0c;中文是统一建模语言&#xff0c;是由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明&#xff0c;展示&#xff0c;构建和记录软件系统的产出。通过使用UML使得在软件开发之前&#xff0c; 对整个软件设计有更好的…

【数据库】Redis数据类型

目录 一&#xff0c; Key操作 1&#xff0c; 相关命令 2&#xff0c; 示例演示 二&#xff0c;字符串 String 1&#xff0c; 结构图 2&#xff0c;相关命令 3&#xff0c;示例演示 三&#xff0c; 列表 List 1&#xff0c; 结构图 2&#xff0c; 相关命令 3&#xf…

VO、DTO、BO、PO、DO区别

VO、DTO、BO、PO、DO区别 VO&#xff1a;&#xff08;View Object&#xff09;视图对象&#xff0c;一般位于Controller层&#xff0c;用于展示视图。DTO&#xff1a;&#xff08;Data Transfer Object&#xff09;数据传输对象&#xff0c; 即RPC 接口请求或传输出去的对象&a…

PMP值得考吗?含金量如何?

关于哪些证书可以考&#xff0c;这里我也不说其他的证书因为术业有专攻&#xff0c;其他证书的含金量估计我也没有更加专业的人士懂&#xff0c;我就推荐一下关于项目管理pmp证书的一些含金量吧&#xff01;对于想备考PMP的朋友或许有一些帮助。 一&#xff0c;PMP证书的价值体…

简易高并发内存池

文章目录从零实现一个高并发的内存池定长内存池定长内存池设计申请内存池用户申请用户归还&#xff08;释放&#xff09;总体代码测试对比&#xff08;malloc&#xff09;高并发内存池框架简介thread cache的设计申请部分释放部分第一层的测试central cache的设计申请部分释放部…

【Kubernetes】【十九】安全认证

第九章 安全认证 本章节主要介绍Kubernetes的安全认证机制。 访问控制概述 ​ Kubernetes作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。 客户端 在Kubernetes集群…

【Kubernetes】【十七】数据存储 基本存储 EmptyDir HostPath NFS

第八章 数据存储 ​ 在前面已经提到&#xff0c;容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&#xff0c;保存在容器中的数据也会被清除。这种结果对用户来说&#xff0c;在某些情况下是不乐意看到的。为了持久化保存容器的数据&#xff0c;ku…

2023只会“点点点”,被裁只是时间问题,高薪的自动化测试需要掌握那些技能?

互联网已然是存量市场了&#xff0c;对人员规模的需求正在放缓。在存量市场里&#xff0c;冗余人员和低效人员会被淘汰、被外包。而优秀的人才也会一直受到招聘方的青睐。所以我们就看到了近期行业里冰火两重天的一幕&#xff0c;一边是大量的低端测试工程师被淘汰、求职屡屡碰…

ssh设置:免密登入、修改默认端口、禁止root登入、限制错误登入次数

服务器&#xff1a; 客户端&#xff1a; 在下面不再说明服务器和客户端。 1.修改ssh默认端口 是在服务器中设置。 该设置涉及三部分&#xff1a;sshd配置文件修改/增加新端口、Selinux添加新端口、Firewall开放新端口。 vim /etc/ssh/sshd.config&#xff0c;找到#Port行&…

使用PHP+yii2调用asmx服务接口

一.创建服务端 1&#xff1a;创建一个ASP.NET web应用程序 2:选择空的模板 3&#xff1a;系统生成项目目录 4&#xff1a;右键项目-添加项-新建项 5&#xff1a;选择Web 服务&#xff08;ASMX&#xff09; 6&#xff1a;选择之后项目中会有一个Test.asmx服务程序&#xff0c;…