Java学习 - 黑马 - 随堂笔记 - 15_集合基础

2023-05-16

Java学习 - 黑马 - 随堂笔记 - 15_集合基础

1. 集合基础

1.1 集合概述

编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择呢?

在这里插入图片描述

集合

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

在这里插入图片描述

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

ArrayList

  • 可调整大小的数组实现
  • :是一种特殊的数据类型,泛型。

怎么用呢?

​ 在出现E的地方我们使用引用数据类型替换即可

​ 举例:ArrayList<String>,ArrayList<Student>

1.2 ArrayList构造方法和添加方法

在这里插入图片描述

package com.itheima_01;

import java.security.PublicKey;
import java.util.ArrayList;

public class ArrayListDemo01 {
    public static void main(String[] args) {
        //public ArrayList();创建一个空的集合对象
        //ArrayList<String> array = new ArrayList<>();
        //new后面的ArrayList<>尖括号里面没有东西,不会报错(JDK7以后新特性,可以根据前面推断出来)
        ArrayList<String> array = new ArrayList<String>();

        //public boolean add(E e);将指定的元素追加到此集合的末尾
        //System.out.println(array.add("hello"));
        array.add("hello");
        array.add("world");
        array.add("java");

        //public void add(int index,E element);在此集合中的指定位置插入指定的元素
        array.add(1,"javaSE");
        //array.add(3,"javaEE");

        //IndexOutOfBoundsException:集合的索引越界
        //array.add(4,"Error");

        //输出集合
        System.out.println("array:" + array);
    }
}

1.3 ArrayList集合常用方法

在这里插入图片描述

package com.itheima_01;

import java.util.ArrayList;

public class ArrayListDemo02 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> array = new ArrayList<String>();

        //添加元素
        array.add("hello");
        array.add("world");
        array.add("java");
        array.add("hello");
        array.add("world");
        array.add("java");

        //public boolean remove(Object o);删除指定的元素,返回删除是否成功
        System.out.println(array.remove("world"));
        System.out.println(array.remove("javaEE"));
        System.out.println("-------------");

        //public E remove(int index);删除指定索引处的元素,返回被删除的元素
        System.out.println(array.remove(1));
        System.out.println("==============");

        //public E set(int index,E element);修改指定索引处的元素,返回被修改的元素
        System.out.println(array.set(1,"javaSE"));
        System.out.println("_________________");

        //public E get(int index);返回指定索引处的元素
        System.out.println(array.get(0));
        System.out.println(array.get(1));
        System.out.println(array.get(2));
        //System.out.println(array.get(5));//IndexOutOfBoundsException
        System.out.println("+++++++++++++");

        //public int size();返回集合中的元素的个数
        System.out.println(array.size());

        //输出集合
        System.out.println("array:" + array);
    }
}

案例:存储字符串并遍历

需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合

思路:

  1. 创建集合对象

  2. 往集合中添加字符串对象

  3. 遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现

  4. 遍历集合,其次要能获取到集合的长度,这个通过size()方法实现

  5. 遍历集合的通用格式

    for(int i = 0;i < 集合对象.size();i++){
    	集合对象.get(i) //就是指定索引处的元素
    }
    
package com.itheima_02;

import java.util.ArrayList;

/*
1. 创建集合对象
2. 往集合中添加字符串对象
3. 遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
4. 遍历集合,其次要能获取到集合的长度,这个通过size()方法实现
5. 遍历集合的通用格式
 */
public class ArrayListTest01 {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array = new ArrayList<String>();

        //往集合中添加字符串对象
        array.add("拾叶");
        array.add("纸上的青春");
        array.add("夜未央");
        array.add("辰龙");
        array.add("金");

        /*
        3. 遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
        4. 遍历集合,其次要能获取到集合的长度,这个通过size()方法实现
        5. 遍历集合的通用格式
         */
        for (int i = 0; i < array.size(); i++) {
            String s = array.get(i);
            System.out.println(s);
        }
    }
}

案例:存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

在这里插入图片描述

思路:

  1. 定义学生类
  2. 创建集合对象
  3. 创建学生对象
  4. 添加学生对象到集合中
  5. 遍历集合,采用通用遍历格式实现
package com.itheima_02;

import java.util.ArrayList;

/*
思路:

1. 定义学生类
2. 创建集合对象
3. 创建学生对象
4. 添加学生对象到集合中
5. 遍历集合,采用通用遍历格式实现
 */
public class ArrayListTest02 {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        //创建学生对象
        Student s1 = new Student("拾叶", 22);
        Student s2 = new Student("拾叶King", 21);
        Student s3 = new Student("夜未央", 23);

        //添加学生对象到集合中
        array.add(s1);
        array.add(s2);
        array.add(s3);

        //遍历集合,采用通用遍历格式实现
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            System.out.println(student.getName() + "," + student.getAge());
        }
    }
}
package com.itheima_02;
//学生类
public class Student {
    private String name;
    private int age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

案例:存储学生对象并遍历(升级版)

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

​ 学生的姓名和年龄来自于键盘录入

思路:

  1. 定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
  2. 创建集合对象
  3. 键盘录入学生对象所需要的数据
  4. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
  5. 往集合中添加学生对象
  6. 遍历集合,采用通用遍历格式实现
package com.itheima_03;

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

/*
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

​	学生的姓名和年龄来自于键盘录入

思路:

1. 定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
2. 创建集合对象
3. 键盘录入学生对象所需要的数据
4. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
5. 往集合中添加学生对象
6. 遍历集合,采用通用遍历格式实现
 */
public class ArrayListTest {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        /*
        //键盘录入学生对象所需要的数据
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生的姓名:");
        String name = sc.nextLine();

        System.out.println("请输入学生的年龄:");
        String age = sc.nextLine();

        //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
        Student s = new Student();
        s.setAge(name);
        s.setAge(age);

        //往集合中添加学生对象
        array.add(s);
         */
        //为了提高代码的复用性,我们用方法来改进程序
        addStudent(array);
        addStudent(array);
        addStudent(array);

        //遍历集合,采用通用遍历格式实现
        for (int i = 0; i < array.size(); i++) {
            Student student = array.get(i);
            System.out.println(student.getName()+","+student.getAge());
        }
    }
    /*
    两个明确:
        返回值类型:void
        参数:ArrayList<Student> array
     */
    public static void addStudent(ArrayList<Student> array){
        //键盘录入学生对象所需要的数据
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生的姓名:");
        String name = sc.nextLine();

        System.out.println("请输入学生的年龄:");
        String age = sc.nextLine();

        //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
        Student s = new Student();
        s.setName(name);
        s.setAge(age);

        //往集合中添加学生对象
        array.add(s);
    }
}
package com.itheima_03;
//学生类
public class Student {
    private String name;
    private String age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java学习 - 黑马 - 随堂笔记 - 15_集合基础 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

    我最近开始使用 MongoDB 和 Apache Solr 我使用 MongoDB 作为数据存储 并且希望 Apache Solr 为我的数据创建索引 以实现应用程序中的搜索功能 经过一些研究 我发现 基本上有两种方法可以在 MongoDB
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • 如何处理 StaleElementReferenceException

    我正在为鼠标悬停工作 我想通过使用 for 循环单击每个链接来测试所有链接的工作条件 在我的程序中 迭代进行一次 而对于下一次迭代 它不起作用并显示 StaleElementReferenceException 如果需要 请修改代码 pub
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 何时在 hibernate 中使用 DiscriminatorValue 注解

    在 hibernate 中使用 DiscriminatorValue 注释的最佳场景是什么以及何时 这两个链接最能帮助我理解继承概念 http docs oracle com javaee 6 tutorial doc bnbqn html
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向

随机推荐

  • js简单事件解释(基础)

    nbsp nbsp nbsp 事件 事件概念 组件触发了某个动作 触发代码的执行 nbsp 点击事件 onclick nbsp 单击事件 nbsp 组件被单击所触发的事件 ondbclick 双击事件 焦点事件 nbsp nbsp inpu
  • JavaEE-面试-POI面试回答思路

    是什么 xff1f Apache POI是Apache开源的 可以通过Java读写word和excel 难不难 xff1f 不难 它的出现解决什么问题 xff1f 导出word或者excel xff08 报表 xff09 xff0c 方便数
  • 树莓派原生系统安装ROS(含网络代理,ROS编译安装以及ROS小车制作过程)

    本文将自主搭建树莓派ROS自主导航小车 目前已经完成的有 xff1a 1 树莓派初始化配置 2 树莓派局域网网络代理 3 树莓派ros安装 4 hector slam安装 5 自制阿克曼底盘控制 python 以下为全文链接 xff1a 树
  • 比较对象的方法——equals()和hashCode()方法

    equals equals是Object中的一个方法 xff0c 用于判断两个对象是否相同 一般会被重写来使用 Object中的equals定义为 xff1a span class token keyword public span spa
  • OpenCores 介绍

    关于 OpenCores OpenCores是一个开源的硬件项目网站 xff0c 里面有很多利用Verilog VHDL SystemVerilog 等硬件描述语言建模 设计的项目 xff0c 适合FPGA和ASIC开发 好多熟悉FPGA设
  • pytorch中张量的创建和张量中数据类型的转化

    1 使用torch tensor 函数创建张量 张量的最基本的创建方法和Numpy中创建Array的格式是一致的 xff0c 都是 创建函数 序列 的格式 xff0c 张量的创建函数 xff1a torch tensor t1 61 tor
  • 一文吃透VSCode中git的相关配置与使用

    本篇文章带大家聊聊VSCode 43 Git操作 xff0c 介绍一下VSCode中git的相关配置与使用 xff0c 希望对大家有所帮助 xff01 xff08 本文操作均在 Gitee 上进行 xff0c Gitee 与 Github
  • 如何安装并管理多版本node?方法介绍

    如何安装并管理多版本node xff1f 下面本篇文章给大家介绍一下多版本node的安装与切换详细操作 xff0c 希望对大家有所帮助 xff01 安装多版本node的原因 xff1a 在项目开发过程中 xff0c 不同项目使用的nodej
  • 软件工程复习(九):面向对象方法学引论

    面向对象方法学引论 面向对象方法学 主要观点 1 客观世界是由各种对象组成的 2 所有对象划分成了各种对象类 xff0c 每个对象类定义了一组数据和一组方法 这也是与面向过程设计的最大不同 xff0c 面向对象将二者分开 3 按照父类和子类
  • 记录一下关于国民技术单片机(N32G457)无法用MDK(Keil5)进行下载程序以及在线仿真的原因

    最近在学习使用国民技术的单片机来驱动无刷直流电机 xff0c 但是因为MDK对这个单片机支持没那么好 xff0c 所以没办法下载程序以及在线仿真调试 只能是添加了国民技术单片机的固件库之后 xff0c 编译程序没啥问题了 因为平常下载程序都
  • MacOS 安装brew失败解决方法

    MacOS 安装brew失败解决方法 报错信息解决方法 报错信息 error RPC failed curl 28 LibreSSL SSL read Operation timed out errno 60 fatal expected
  • Java学习 - 黑马 - 随堂笔记 - 09_数组

    Java学习 黑马 随堂笔记 09 数组 1 数组定义格式 3 1 数组概述 a 61 100 b 61 100 c 61 100 d 61 100 e 61 100 一次性声明大量的用于存储数据的变量要存储的数据通常都是同类型数据 xff
  • C#WinForm窗体控件学习(一)

    C 中WinForm窗体常见控件 一 常用控件一般都有以下属性和事件 属性 1 Name xff1a 控件的名称属性 xff0c 识别不同空间的唯一标识 2 Text xff1a 文本输入 3 Font xff1a 控件里字体的属性 xff
  • Java学习 - 黑马 - 随堂笔记 - 10_方法

    Java学习 黑马 随堂笔记 10 方法 1 方法概述 1 1 什么是方法 方法 xff08 method xff09 是将具有独立功能的代码块组织成为一个整体 xff0c 使其具有特殊功能的代码集 注意 xff1a 方法必须先创建才可以使
  • Java学习(b站基础) - 狂神说 - 目录总章

    Java学习 xff08 b站基础 xff09 狂神说 目录总章 本内容仅为个人看视频记录的随手笔记 xff0c 部分内容可能不全面 xff0c 可以作为学习狂神说视频之后进行复习巩固使用 Markdown学习笔记 xff08 简单的部分M
  • Java学习 - 黑马 - 随堂笔记 - 11_Debug

    Java学习 黑马 随堂笔记 11 Debug 1 Debug 1 1 Debug概述 Debug xff1a 是供程序员使用的程序调试工具 xff0c 它可以用于查看程序的执行流程 xff0c 也可以用于追踪程序执行过程来调试程序 1 2
  • Java学习 - 黑马 - 随堂笔记 - 12_基础知识练习

    Java学习 黑马 随堂笔记 12 基础知识练习 1 案例 xff1a 减肥计划 案例 xff1a 减肥计划 xff08 if xff09 需求 xff1a 输入星期数 xff0c 显示今天的减肥活动 周一 xff1a 跑步 周二 xff1
  • Java学习 - 黑马 - 随堂笔记 - 13_面向对象基础

    Java学习 黑马 随堂笔记 13 面向对象基础 1 类和对象 1 1 什么是对象 万物皆对象 xff0c 客观存在的事物皆为对象 1 2 什么是面向对象 1 3 什么是类 类是对现实生活中一类具有共同属性和行为的事物的抽象 类的特点 xf
  • Java学习 - 黑马 - 随堂笔记 - 14_字符串

    Java学习 黑马 随堂笔记 14 字符串 1 API 1 1 API概述 API Application Programming Interface xff1a 应用程序编程接口 编写一个机器人变成去控制机器人踢足球 xff0c 程序需要
  • Java学习 - 黑马 - 随堂笔记 - 15_集合基础

    Java学习 黑马 随堂笔记 15 集合基础 1 集合基础 1 1 集合概述 编程的时候如果要存储多个数据 xff0c 使用长度固定的数组存储格式 xff0c 不一定满足我们的需求 xff0c 更适应不了变化的需求 xff0c 那么 xff