[从0开始学Java|第十一天]ArrayList

集合的基本使用

集合存储数据类型的特点

集合能直接存储引用数据类型,不能直接存储基本数据类型,可以把基本数据类型变成对应的包装类来存储

集合和数组的对比

ArrayList

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo1 {
    public static void main(String[] args) {
        //1.创建集合的对象
        //泛型:限定集合中存储数据的类型
        //ArrayList<String> list = new ArrayLiat<String>();
        //JDK7:
        //ArrayList<String> list = new ArrayLiat<>();

        //此时我们创建的是ArrayList的对象,而ArrayList是Java已经写好的一个类
        //这个类在底层做了一些处理
        //打印的对象不是地址值,而是集合中存储的数据内容
        //在展示的时候会拿[]把所有的数据进行包裹
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);
    }
}

ArrayList成员方法

boolean add(E,e) 添加元素,返回值表示是否添加成功

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo2 {
    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.输出结果
        System.out.println(list);
    }
}

(运行结果截图)

boolean remove(E e) 删除指定元素,返回值表示是否删除成功

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo3 {
    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 result = list.remove("aaa");
        System.out.println(result);
        
        System.out.println(list);
    }
}

(运行结果截图)

E remove(int index) 删除指定索引的元素,返回被删除元素

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo4 {
    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.删除元素
        String str = list.remove(0);
        System.out.println(str);

        System.out.println(list);
    }
}

(运行结果截图)

E set(int index,E e) 修改指定索引下的元素,返回原来的元素

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo5 {
    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.修改元素
        String str = list.set(1,"ddd");
        System.out.println(str);


        System.out.println(list);
    }
}

(运行结果截图)

E get(int index) 获取指定索引的元素

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo6 {
    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.查询元素
        String s = list.get(0);
        System.out.println(s);

        System.out.println(list);
    }
}

(运行结果截图)

int size() 集合的长度,也就是集合中元素的个数

(源代码)

java 复制代码
package com.itheima.listdemo;

import java.util.ArrayList;

public class ArrayLiatDemo7 {
    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");

        //遍历
        for (int i = 0; i < list.size(); i++) {
            //i 索引
            //list.get(i) 元素
            String str = list.get(i);
            System.out.println(str);
        }
    }
}

(运行结果截图)

集合练习-添加字符串和整数并遍历

练习:集合的遍历方式

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

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

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

        //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("]");
    }
}

(运行结果截图)

基本数据类型对应的包装类

练习:添加数字并遍历

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

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

        //2.添加元素
        //JDK5以后 int Integer 之间是可以互相转化的
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        //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("]");
    }
}

(运行结果截图)

集合练习-添加学生对象并遍历的两个练习

练习:添加学生对象并遍历

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

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

        //2.创建学生对象
        Student s1 = new Student("zhangsan",23);
        Student s2 = new Student("lisi",24);
        Student s3 = new Student("wangwu",25);

        //3.添加元素
        list.add(s1);
        list.add(s2);
        list.add(s3);

        //4.遍历集合
        for (int i = 0; i < list.size(); i++) {
            //i 索引 list.get(i) 元素/学生对象
            Student stu = list.get(i);
            System.out.println(stu.getName() + "," + stu.getAge());
        }
    }
}
java 复制代码
package com.itheima.test;

public class Student {
    //1.私有化成员变量
    //2.空参构造方法
    //3.带全部参数的构造方法
    //4.get/set方法

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

(运行结果截图)

练习:添加学生对象并遍历(改)

(源代码)

java 复制代码
package com.itheima.test;

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

public class Test4 {
    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();
            System.out.println("请输入学生年龄");
            int age = sc.nextInt();

            //把name和age赋值给学生对象
            s.setName(name);
            s.setAge(age);

            //把学生对象添加到集合中
            list.add(s);
        }

        //3.遍历
        for (int i = 0; i < list.size(); i++) {
            //i 索引 list.get(i) 元素/学生对象
            Student stu = list.get(i);
            System.out.println(stu.getName() + "," + stu.getAge());
        }
    }
}
java 复制代码
package com.itheima.test;

public class Student {
    //1.私有化成员变量
    //2.空参构造方法
    //3.带全部参数的构造方法
    //4.get/set方法

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

(运行结果截图)

集合练习-查找用户是否存在

练习:添加用户对象并判断是否存在(1)

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

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

        User u1 = new User("zhangsan","001","123456");
        User u2 = new User("lisi","002","123qwe");
        User u3 = new User("wangwu","003","321456");

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

        boolean flag = contains(list,"001");

        System.out.println(flag);
    }
    public static boolean contains(ArrayList<User> list, String ID) {
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getID();
            if (uid.equals(ID)) {
                return true;
            }
        }
        return false;
    }
}
java 复制代码
package com.itheima.test;

public class User {
    private String username;
    private String ID;
    private String password;

    public User() {
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

(运行结果截图)

练习:添加用户对象并判断是否存在(2)

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

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

        User u1 = new User("zhangsan","001","123456");
        User u2 = new User("lisi","002","123qwe");
        User u3 = new User("wangwu","003","321456");

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

        int index = getIndex(list,"001");

        System.out.println(index);

    }
    public static int getIndex(ArrayList<User> list, String ID) {
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getID();
            if (uid.equals(ID)) {
                return i;
            }
        }
        return -1;
    }
}
java 复制代码
package com.itheima.test;

public class User {
    private String username;
    private String ID;
    private String password;

    public User() {
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

(运行结果截图)

集合练习-返回多个数据

练习:添加手机对象并返回要求的数据

(源代码)

java 复制代码
package com.itheima.test;

import java.util.ArrayList;

public class Test8 {
    public static void main(String[] args) {
        //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> phoneInfoList = getPhoneInfo(list);

        //5.遍历集合
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.getBrand() + "," + phone.getPrice());
        }
    }

    //技巧:若谷我们要返回多个数据,可以把这些数据先放到一个容器(集合 数组)中,再把容器返回
    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        //定义一个集合用于存储价格低于3000的手机对象
        ArrayList<Phone> resultList = new ArrayList<>();
        //遍历集合1
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            int price = p.getPrice();
            //如果当前手机的价格低于3000,那么就把手机添加到resultList中
            if(price < 3000){
               resultList.add(p);
            }
        }
        //返回resultList
        return resultList;
    }
}
java 复制代码
package com.itheima.test;

public class Phone {
    //Phone属性:品牌,价格
    private String brand;
    private int price;

    public Phone() {
    }

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

    public String getBrand() {
        return brand;
    }

    public void setBand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

(运行结果截图)

相关推荐
ShineWinsu20 小时前
对于C++:继承的解析—上
开发语言·数据结构·c++·算法·面试·笔试·继承
小付同学呀20 小时前
C语言学习(五)——输入/输出
c语言·开发语言·学习
码农阿豪20 小时前
Nacos 日志与 Raft 数据清理指南:如何安全释放磁盘空间
java·安全·nacos
梦幻精灵_cq21 小时前
学C之路:不可或缺的main()主函数框架(Learn-C 1st)
c语言·开发语言
直有两条腿21 小时前
【大模型】Langchain4j
java·langchain
love530love21 小时前
Scoop 完整迁移指南:从 C 盘到 D 盘的无缝切换
java·服务器·前端·人工智能·windows·scoop
消失的旧时光-194321 小时前
C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
java·开发语言·c++·并发
莫寒清21 小时前
ThreadLocal
java·面试
福大大架构师每日一题1 天前
go-zero v1.10.0发布!全面支持Go 1.23、MCP SDK迁移、性能与稳定性双提升
开发语言·后端·golang
学习是生活的调味剂1 天前
spring bean循环依赖问题分析
java·后端·spring