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

(运行结果截图)

相关推荐
黄筱筱筱筱筱筱筱2 小时前
第三次Python练习题
开发语言·python
夜郎king2 小时前
基于 Java 实现数九天精准计算:从节气算法到工程化落地
java·开发语言
新缸中之脑2 小时前
Nanobot:轻量级OpenClaw
java·运维·网络
心柠2 小时前
原型和原型链
开发语言·javascript·ecmascript
悟能不能悟2 小时前
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges
java·开发语言
马猴烧酒.2 小时前
【DDD重构|第十三天】DDD 领域驱动设计详解+实战
java·jvm·ide·重构·tomcat·maven·团队开发
代码游侠2 小时前
C语言核心概念复习(三)
开发语言·数据结构·c++·笔记·学习·算法
烧烧的酒0.o2 小时前
Java——JavaSE完整教程
java·开发语言·学习
鹏哥哥啊Aaaa2 小时前
15.idea启动报错
java·ide·intellij-idea