当前位置: 首页 > news >正文

java后端开发day17--ArrayList--集合

在这里插入图片描述
(以下内容全部来自上述课程)

1.集合

和数组差不多,但能自动扩容

1.集合存储数据类型的特点

  • 可以存引用数据类型。
  • 可以存基本数据类型,但要变成包装类

2.集合和数组的对比

1.长度
  • 数组:长度固定
  • 集合:长度可变
2.存储类型
  • 数组:可以存基本数据类型和引用数据类型。
  • 集合:引用数据类型和基本数据类型—>包装类。

3.定义

泛型(E):限定集合中存储数据的类型

ArrayList<String> list = new ArrayList<>();  //[]

解释:
此时我们创建的是ArrayList的对象,而ArrayList是Java已经写好的一个类。
这个类在底层做了一些处理。
打印对象不是地址值,而是集合中存储数据内容。
在展示的时候会拿[ ]把所有的数据进行包裹。

4.成员方法–增删改查

  1. boolean add(E e) 添加元素,返回值表示是否添加成功
  2. boolean remove(E e) 删除指定元素,返回值表示是否删除成功
  3. E remove(int index) 删除指定索引的元素,返回被删除元素
  4. E set(int index,E e) 修改指定索引下的元素,返回原来的元素
  5. E get(int index) 获取指定索引的元素
  6. int size 集合的长度,也就是集合中元素的个数
package ArrayList;

import java.util.ArrayList;

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

        //2.添加元素
        list.add("aaa");
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //3.删除元素
        boolean result1 = list.remove("aaa");
        System.out.println(result1);  //true
        System.out.println(list);  //[aaa, bbb, ccc]

        boolean result2 = list.remove("ddd");
        System.out.println(result2);  //false
        System.out.println(list);  //[aaa, bbb, ccc]

        String s = list.remove(0);
        System.out.println(s);  //aaa
        System.out.println(list);  //[bbb, ccc]

        //4.修改元素
        String result3 = list.set(0, "ddd");
        System.out.println(result3);  //bbb
        System.out.println(list);  //[ddd, ccc]

        //5.查询元素
        String result4 = list.get(0);
        System.out.println(result4);  //ddd
        System.out.println(list);  //[ddd, ccc]

        //6.遍历集合
        for(int i = 0; i < list.size(); i++){
            String s1 = list.get(i); //[ddd, ccc]
            System.out.println(s1);  //ddd ccc
        }


    }
}

2.练习

1.集合的遍历方式

需求:定义一个集合,添加字符串,并进行遍历。
遍历格式参照:[元素1,元素2,元素3]。

package ArrayList;

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        /*需求:定义一个集合,添加字符串,并进行遍历。
              遍历格式参照:[元素1,元素2,元素3]。*/
        //1.创建一个集合
        ArrayList<String> list = new ArrayList<>();
        //2.添加元素
        list.add("aaa");
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //3.遍历集合
        System.out.print("[");
        for(int i = 0; i < list.size(); i++){
            String s = list.get(i);
            if(i == list.size() - 1){
                System.out.println(s + "]");
            } else {
                System.out.print(s + ",");
            }
        }
    }
}

2.添加数字并遍历(包装类)

需求:定义一个集合,添加数字,并进行遍历。
遍历格式参照:[元素1,元素2,元素3]。
在这里插入图片描述

package ArrayList;

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        /*需求:定义一个集合,添加数字,并进行遍历。
              遍历格式参照:[元素1,元素2,元素3]。*/
        //1.创建一个集合
        ArrayList<Integer > list = new ArrayList<>();
        //2.添加数字
        //jdk5以后,int 类型可以自动装箱成Integer类型
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        //3.遍历集合
        System.out.print("[");
        for(int i = 0; i < list.size(); i++){
            Integer  s = list.get(i);
            if(i == list.size() - 1){
                System.out.println(s + "]");
            } else {
                System.out.print(s + ",");
            }
        }
    }
}

3.添加学生对象并遍历1

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

1.有类:Javabean

package ArrayList;

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 + "}";
    }
}

2.行为主体

package ArrayList;

import java.util.ArrayList;

public class Test2 {
    public static void main(String[] args) {
        /*需求:定义一个集合,添加一些学生对象,并进行遍历
            学生类的属性为:姓名,年龄。*/
        //1.创建一个集合
        ArrayList<Student> list = new ArrayList<>();
        //2.创建学生对象
        Student s1 = new Student("张三",18);
        Student s2 = new Student("李四",19);
        Student s3 = new Student("王五",20);
        //3.把学生对象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        //4.遍历集合
        for(int i = 0; i < list.size(); i++){
            Student s = list.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

4.添加学生对象并遍历2

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

package ArrayList;

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

public class Test3 {
    public static void main(String[] args) {
        //1.定义一个集合
        ArrayList<Student> list = new ArrayList<>();
        //2.键盘录入学生信息并添加到集合中
        Scanner sc = new Scanner(System.in);
        for(int i = 0; i < 3; i++){
            Student s = new Student();
            System.out.println("请输入学生的姓名:");
            String name = sc.next();
            s.setName(name); //把键盘录入的姓名,赋值给学生对象
            System.out.println("请输入学生的年龄:");
            int age = sc.nextInt();
            s.setAge(age); //把键盘录入的年龄,赋值给学生对象
            list.add(s);  //把学生对象添加到集合中
        }
        //3.遍历集合
        for(int i = 0; i < list.size(); i++){
            Student s = list.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

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

需求:
1.main方法中定义一个集合,存入三个用户对象。
用户属性为:id,username,password
2.要求:定义一个方法,根据id查找对应的用户信息。
如果存在,返回true
如果不存在,返回false

1.有对象:Javabean,也就是泛型(虽然有点儿不一样,但大差不差)

package ArrayList;

public class User {
    private int id;
    private String username;
    private String password;

    public User() {
    }

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

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

    /**
     * 设置
     * @param id
     */
    public void setId(int 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 getPassword() {
        return password;
    }

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

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

2.行为主体

package ArrayList;

import java.util.ArrayList;

public class Test4 {
    public static void main(String[] args) {
        /*需求:
        1.main方法中定义一个集合,存入三个用户对象。
            用户属性为:id,username,password
        2.要求:定义一个方法,根据id查找对应的用户信息。
            如果存在,返回true
            如果不存在,返回false*/
        //1.创建集合
        ArrayList<User> list = new ArrayList<>();
        //2.创建用户对象
        User u1 = new User(1,"张三","123456");
        User u2 = new User(2,"李四","123456");
        User u3 = new User(3,"王五","123456");
        //3.把用户对象添加到集合中
        list.add(u1);
        list.add(u2);
        list.add(u3);
        //4.调用方法
        boolean flag = get(list,1);
        System.out.println(flag);
    }
    public static boolean get(ArrayList<User> list,int id){
        for(int i = 0; i < list.size(); i++){
            User u = list.get(i);
            if(u.getId() == id){
                return true;
            }
        }
        return false;
    }
}

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

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

package ArrayList;

import java.util.ArrayList;

public class Test4 {
    public static void main(String[] args) {
        /*需求:
        1.main方法中定义一个集合,存入三个用户对象。
            用户属性为:id,username,password
        2.要求:定义一个方法,根据id查找对应的用户信息。
            如果存在,返回索引
            如果不存在,返回-1*/
        //1.创建集合
        ArrayList<User> list = new ArrayList<>();
        //2.创建用户对象
        User u1 = new User(1,"张三","123456");
        User u2 = new User(2,"李四","123456");
        User u3 = new User(3,"王五","123456");
        //3.把用户对象添加到集合中
        list.add(u1);
        list.add(u2);
        list.add(u3);
        //4.调用方法
        int index = get(list,1);
        System.out.println(index);
    }
    public static int get(ArrayList<User> list,int id){
        for(int i = 0; i < list.size(); i++){
            User u = list.get(i);
            if(u.getId() == id){
                return i;
            }
        }
        return -1 ;
    }
}

7.添加手机对象并返回要求的数据

需求:
定义Javabean类:Phone
Phone属性:品牌,价格。
main方法中定义一个集合,存入三个手机对象。
分别为:小米,1000.苹果,8000.锤子2999.
定义一个方法,将价格低于3000的手机信息返回。

1.Javabean

package ArrayList;

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

    public Phone() {
    }

    public Phone(String brand, double 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 double getPrice() {
        return price;
    }

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

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

2.行为主体

package ArrayList;

import java.util.ArrayList;

public class Test5 {
    public static void main(String[] args) {
        /*需求:
            定义Javabean类:Phone
            Phone属性:品牌,价格。
            main方法中定义一个集合,存入三个手机对象。
            分别为:小米,1000.苹果,8000.锤子2999.
            定义一个方法,将价格低于3000的手机信息返回。*/

        //1.定义一个集合
        ArrayList<Phone> list = new ArrayList<>();
        //2.创建手机对象
        Phone p1 = new Phone("小米",1000);
        Phone p2 = new Phone("苹果",8000);
        Phone p3 = new Phone("锤子",2999);
        //3.把手机对象添加到集合中
        list.add(p1);
        list.add(p2);
        list.add(p3);
        //4.调用方法
        ArrayList<Phone> list1 = getPhone(list);
        for (int i = 0; i < list1.size(); i++) {
            Phone p = list1.get(i);
            System.out.println(p.getBrand()+","+p.getPrice());
        }
    }
    //定义一个方法,将价格低于3000的手机信息返回
    public static ArrayList<Phone> getPhone(ArrayList<Phone> list){
        ArrayList<Phone> list1 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            if(p.getPrice()<3000){
                list1.add(p);
            }
        }
        return list1;
    }
}

相关文章:

  • jQuery AJAX 方法详解
  • CAN总线常见的错误帧及产生原因
  • 23种设计模式 - 桥接模式
  • Excel核心函数VLOOKUP全解析:从入门到精通
  • 【第四届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2025】网络安全,人工智能,数字经济的研究
  • LeetCode--236. 二叉树的最近公共祖先
  • jetbrains IDEA集成大语言模型
  • java练习(32)
  • [Qt] 使用QUndoStack运行到cmd->isObsolete()崩溃
  • 【Axure 模版素材】数据可视化驾驶舱+图表素材 - AxureMost
  • numpy(02 数据类型和数据类型转换)
  • “深入浅出”系列之C++:(22)asio库
  • 服务器部署基于Deepseek的检索增强知识库
  • 嵌入式硬件篇---常用的汇编语言指令
  • Mini-Omni2
  • java防抖,防止表单重复提交,aop注解形式
  • deepseek帮我设计物理量采集单片机口保护电路方案
  • 什么是Baklib云内容中台?
  • chrome V3插件开发,调用 chrome.action.setIcon,提示路径找不到
  • 操作系统2.4
  • 颜福庆与顾临的争论:1930年代在中国维持一家医学院要花多少钱
  • 西北大学副校长成陕西首富?旗下巨子生物去年净利超20亿,到底持股多少
  • 迪奥部分客户数据遭泄露,公司称正持续展开调查
  • 署名文章:从宏观调控看中国经济基本面
  • 贵州省总工会正厅级副主席梁伟被查,曾任贵州省纪委副书记
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报