Java基础07——集合

news2024/11/17 19:47:54

Java基础07——集合

  • 一、集合和数组的对比
  • 二、ArrayList成员方法
  • 三、集合练习
    • 1. 添加数字并遍历
    • 2. 添加学生对象并遍历
      • 学生类
      • 测试类
      • 输出结果
    • 3. 添加用户对象并判断是否存在
      • 用户类
      • 测试类
      • 输出结果
    • 4. 添加手机对象并返回要求的数据(返回多个数据)
      • 手机类
      • 测试类
      • 输出结果

一、集合和数组的对比

  • 长度:
    • 数组:长度固定
    • 集合:长度可变
  • 存储类型:
    • 数组:可以存基本数据类型和引用数据类型
    • 集合:可以存引用数据类型,基本数据类型需要包装类才能存
基本数据类型包装类
byteByte
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

二、ArrayList成员方法

  • 打印ArrayList实例,输出的是集合中存储的数据内容,不是地址值。
  • E代表范型,限定集合中存储数据的类型。
方法名说明
boolean add(E e)添加元素,返回值代表是否添加成功
boolean remove(E e)删除置顶元素,返回值代表是否删除成功
E remove(int index)删除指定索引的元素,返回被删除元素
E set(int index, E e)修改指定索引下的元素,返回原来的元素
E get(int index)获取指定索引的元素
int size()集合的长度,集合中元素的个数
import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        // 创建一个集合
        ArrayList<String> list = new ArrayList<>();

        // 添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        System.out.println(list);

        // 删除元素
        list.remove("aaa");
        System.out.println(list);
        list.remove(0);
        System.out.println(list);


        // 修改元素
        list.set(0, "000");
        System.out.println(list);

        // 查询元素
        String s = list.get(0);
        System.out.println(s);

        // 获取长度
        int size = list.size();
        System.out.println(size);

        // 遍历
        System.out.println("-----遍历-----");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

在这里插入图片描述

三、集合练习

1. 添加数字并遍历

  • 需求:定义一个集合,添加数字,并进行遍历。
import java.util.ArrayList;

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

        // 添加元素
        list.add(1);
        list.add(2);
        list.add(3);

        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if (i == list.size() - 1) {
                System.out.print(list.get(i));
            }else{
                System.out.print(list.get(i) + ", ");
            }
        }
        System.out.println("]");
    }
}

在这里插入图片描述

2. 添加学生对象并遍历

  • 需求:定义一个集合,键盘录入一些学生对象,并进行遍历。
  • 学生类的属性为:姓名,年龄。

学生类

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

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

测试类

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

public class StudentTest2 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();

        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            Student s = new Student();
            System.out.println("请输入学生姓名");
            String name = scanner.next();
            System.out.println("请输入学生年龄");
            int age = scanner.nextInt();

            s.setName(name);
            s.setAge(age);

            list.add(s);
        }
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            System.out.println(student.getName() + ", " + student.getAge());
        }
    }
}

输出结果

在这里插入图片描述

3. 添加用户对象并判断是否存在

  • 需求:
    1. main方法中定义一个集合,存入三个用户对象。用户属性为:id,username,password
    1. 定义一个方法,根据id查找对应的用户信息,如果存在返回 索引,如果没有返回-1。

用户类

public class User {
    private String id;
    private String username;
    private String mm;

    public User() {
    }

    public User(String id, String username, String mm) {
        this.id = id;
        this.username = username;
        this.mm = mm;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置
     * @param username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取
     * @return password
     */
    public String getMm() {
        return mm;
    }

    /**
     * 设置
     * @param mm
     */
    public void setMm(String mm) {
        this.mm = mm;
    }

    public String toString() {
        return "User{id = " + id + ", username = " + username + ", mm = " + mm + "}";
    }
}

测试类

import java.util.ArrayList;

public class UserTest {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        User u1 = new User("001", "zs", "123456");
        User u2 = new User("002", "ls", "12345678");
        User u3 = new User("003", "ww", "1234qwer");

        list.add(u1);
        list.add(u2);
        list.add(u3);

        int index = getIndex(list, "002");
        System.out.println("索引是:" + index);
    }

    public static int getIndex(ArrayList<User> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
}

输出结果

在这里插入图片描述

4. 添加手机对象并返回要求的数据(返回多个数据)

  • 需求:定义一个手机类,属性为:品牌、价格。
  • main方法中定义一个集合,存入三个手机对象,分别为:小米,1000;苹果,8000;锤子,2999。
  • 定义一个方法,将价格低于3000的手机信息返回。
  • 如果要返回多个数据,可以把这些数据放到一个容器当中,再把容器返回。

手机类

public class Phone {
    private String brand;
    private int price;

    public Phone() {
    }

    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
    }

    /**
     * 获取
     * @return brand
     */
    public String getBrand() {
        return brand;
    }

    /**
     * 设置
     * @param brand
     */
    public void setBrand(String brand) {
        this.brand = brand;
    }

    /**
     * 获取
     * @return price
     */
    public int getPrice() {
        return price;
    }

    /**
     * 设置
     * @param price
     */
    public void setPrice(int price) {
        this.price = price;
    }

    public String toString() {
        return "Phone{brand = " + brand + ", price = " + price + "}";
    }
}

测试类

import java.util.ArrayList;

public class PhoneTest {
    public static void main(String[] args) {
        ArrayList<Phone> list = new ArrayList<>();

        Phone xiaomi = new Phone("小米", 1000);
        Phone apple = new Phone("苹果", 8000);
        Phone hammer = new Phone("锤子", 2999);

        list.add(xiaomi);
        list.add(apple);
        list.add(hammer);

        ArrayList<Phone> phoneInfoList = getPhoneInfo(list);
        System.out.println("小于3000的手机有:");
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.toString());
        }
    }

    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        ArrayList<Phone> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone phone = list.get(i);
            if (phone.getPrice() < 3000) {
                resultList.add(phone);
            }
        }
        return resultList;
    }
}

输出结果

在这里插入图片描述

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

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

相关文章

【算法】Day06

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录1. BST二叉搜索树的后序遍历序列2. 二叉树中和为某一值的路径&#xff08;二&#xff09;[回溯法]3. 字符串的排列 [全排列问题]4. 最小的K个数 [topK问题]普通小孩也要热爱生活&#xff01; 1. BST二叉搜索树的后序…

IF:6+ 综合分析揭示了一种炎症性癌症相关的成纤维细胞亚型在预测膀胱癌患者的预后和免疫治疗反应方面具有重要意义...

桓峰基因的教程不但教您怎么使用&#xff0c;还会定期分析一些相关的文章&#xff0c;学会教程只是基础&#xff0c;但是如果把分析结果整合到文章里面才是目的&#xff0c;觉得我们这些教程还不错&#xff0c;并且您按照我们的教程分析出来不错的结果发了文章记得告知我们&…

Linux 中断子系统(七):注册中断

Linux 注册中断的 API request_irq():不使用中断线程化request_threaded_irq():使用中断线程化中断线程化 为什么需要将中断下半部处理线程化,原因如下: 中断具有最高优先级,有中断发生时,会抢占进程,导致实时任务不能及时处理。中断上下文总是可以抢占进程上下文,这…

【PyTorch】教程:学习基础知识-(3) Datasets-DataLoader

Dataset & DataLoader PyTorch 提供了两个数据处理的基本方法&#xff1a;torch.utils.data.DataLoader torch.utils.data.Dataset 允许使用预加载的数据集以及自己的数据。 Dataset 存储样本及其对应的标签&#xff0c; DataLoader 在 Dataset 基础上封装了一个可迭代的对…

Python文本颜色设置

Python文本颜色设置实现过程&#xff1a;书写格式&#xff1a;数值表示的参数含义&#xff1a;常见开头格式&#xff1a;实例&#xff1a;实现过程&#xff1a; 终端的字符颜色是用转义序列控制的&#xff0c;是文本模式下的系统显示功能&#xff0c;和具体的语言无关。 转义序…

Acwing4699. 如此编码

某次测验后&#xff0c;顿顿老师在黑板上留下了一串数字 23333 便飘然而去。 凝望着这个神秘数字&#xff0c;小 P 同学不禁陷入了沉思…… 已知某次测验包含 nn 道单项选择题&#xff0c;其中第 i 题&#xff08;1≤i≤n&#xff09;有 ai 个选项&#xff0c;正确选项为 bi&…

CAS And Atomic

CAS(Compare And Swap 比较并交换)&#xff0c;通常指的是这样一种原子操作&#xff1a;针对一个变量&#xff0c;首先比较它的内存值与某个期望值是否相同&#xff0c;如果相同&#xff0c;就给它赋一个新值,底层是能保证cas是原子性的CAS的应用 在Java 中&#xff0c;CAS 操作…

Android开发-AS学习(三)(布局)

相关文章链接&#xff1a;Android开发-AS学习&#xff08;一&#xff09;&#xff08;控件&#xff09;Android开发-AS学习&#xff08;二&#xff09;(控件&#xff09;Android开发应用案例——简易计算器&#xff08;附完整源码&#xff09;二、布局2.1 Linearyout常见属性说…

测试NGINX和uwsgi.ini设置

1.uwsgi修改测试 将服务器升级到16核16G配置后&#xff0c;我将uwsgi.ini中的部分参数调整如下&#xff1a; processes 32 threads 16 结果是导致内存暴满&#xff0c;然后直接服务器都无法连接&#xff0c;导致服务器卡死。之前有博客说processes处理器*2&#xff0c;结果…

【阶段三】Python机器学习26篇:机器学习项目实战:LightGBM回归模型

本篇的思维导图: 项目实战(LightGBM回归模型) 项目背景 为促进产品的销售,厂商经常会通过多个渠道投放广告。本案例将根据某公司在电视、广播和报纸上的广告投放数据预测广告收益,作为公司制定广告策略的重要参考依据。 本项目应用LightGBM回归算法进行项目实战,整…

Nginx入门

介绍&#xff1a; 下载和安装&#xff1a; 安装过程&#xff1a; 1、因为nginx是由c语言编写的&#xff0c;所以需要下载gcc进行编译 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel 2、下载nginx安装包 wget https://nginx.org/download/nginx-1.16.1.ta…

【Java基础知识 1】第一个Java程序(Java的第一步)

本文已收录专栏 &#x1f332;《Java进阶之路》&#x1f332; 编写一个Java程序 第一个Java程序非常简单&#xff0c;代码如下&#xff1a; public class Java01_HelloWorld {public static void main(String[] agrs){System.out.println("欢迎来到Java进阶之路&#x…

蓝桥杯 stm32 按键点灯 CubeMX

注&#xff1a;我们使用的是 HAL 库 文章目录前言一、按键 原理图&#xff1a;二、按键CubeMX配置:三、代码讲解1. 读按键&#xff1a;&#xff08; 三行代码&#xff09;2.按键消抖&#xff1a;3&#xff0c;按键点灯&#xff1a;总结实验效果&#xff1a;前言 一、按键 原理…

基于yolov5-v7.0开发构建银行卡号实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目&#xff0c;感兴趣的话可以自行移步阅读&#xff1a;《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…

CSDN第24期周赛(记录一下)

▶ 爱要坦荡荡 (163.com) 每一道题都有思路&#xff0c;可是只有一道Accepted100%&#xff0c;一道很简单的50%&#xff0c;一道输出错误10%并报错Segmentation Fault&#xff0c;一道字符串有思路但是没时间了 一&#xff0c;蛇皮矩阵 Accepted 10% 报错Segmentation Fault…

2、矩阵介绍

目录 一、矩阵的构造 二、矩阵大小及结构的改变 三、矩阵下标的引用 1.矩阵下标访问单个矩阵元 2.线性引用矩阵元 3.访问多个矩阵元素 四、矩阵信息的提取 1.矩阵结构 2.矩阵大小 3.矩阵的数据类型 一、矩阵的构造 矩阵的构建方式有两种&#xff0c;一种与单元数组相…

【寒假每日一题】DAY.7 有序序列判断

牛客网例题&#xff1a;点我做题 【❤️温馨提示】先做题&#xff0c;再看讲解效果更佳哟 描述 输入一个整数序列&#xff0c;判断是否是有序序列&#xff0c;有序&#xff0c;指序列中的整数从小到大排序 或者从大到小排序(相同元素也视为有序)。输入描述&#xff1a; 第一行…

【C++】stack、queue的模拟实现及deque介绍

一、stack 1. 以vector作为底层容器 从栈的接口中可以看出&#xff0c;栈实际是一种特殊的vector&#xff0c;因此使用vector完全可以模拟实现stack。 由于stack的所有工作是底层容器完成的&#xff0c;而这种具有“修改某物接口&#xff0c;形成另一种风貌”的性质&#xf…

Dubbo学习

文章目录1.概念1.1 Dubbo特性1.2 设计架构2.快速开始2.1需求假设2.2.工程架构2.3 创建模块2.3.1 gmall-interface—公共接口层2.3.2 gmall-user—用户模块2.3.3 gmall-order-web—订单模块2.3.4 测试结果2.3.5 使用Dubbo改造2.3.6 注解版3.监控中心4.整合SpringBoot5.Dubbo配置…

高性能网络设计专栏-网络编程

以下是在零声教育的听课记录。 如有侵权&#xff0c;请联系我删除。 链接&#xff1a;零声教育官网 一、网络io与select&#xff0c;poll。epoll 网络IO &#xff0c;会涉及到两个系统对象 一个是 用户空间 调用 IO 的进程或者线程&#xff0c;另一个是 内核空间的 内核系统&a…