Day11-ArrayList集合

本文介绍了Java中集合的基本使用方法,包括ArrayList的增删改查操作,并通过多个案例展示了如何利用集合处理不同类型的对象数据,如字符串、整数及自定义对象。

1、集合的基本应用

数组的长度是固定的,集合的长度是可变的,集合具有自动扩容的功能。

数组可以存基本数据类型引用数据类型集合只能存储引用数据类型,基本数据类型只有设置成包装类才能存储在集合当中。

ArrayList成员方法

package GGG;

import java.util.ArrayList;

public class hhh {
    public static void main(String[] args) {
        //1、创建集合对象
        //泛型:限定集合中存储数据的类型
        ArrayList<String> list = new ArrayList<>();
        /**
         * 此时我们创建的是ArrayList的对象,而ArrayList是Java已经写好的一个类,
         * 这个类在底层做了一些处理
         * 打印对象不是地址值,而是集合中存储数据内容
         * 在展示的时候会用[]把所有的数据进行包裹
         */
        System.out.println(list);   //打印空集合[]

        //1、添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        System.out.println(list);   //打印添加元素之后的集合[aaa, bbb, ccc, ddd, eee]

        //2、删除元素
        boolean result = list.remove("aaa");
        System.out.println(result);     //判断是否删除成功,true
        System.out.println(list);   //打印删除元素之后的结果[bbb, ccc, ddd, eee]

        String str = list.remove(1);
        System.out.println(str);    //打印被删除的元素ccc
        System.out.println(list);   //打印删除元素之后的结果[bbb, ddd, eee]

        //3、修改元素
        String result2 = list.set(1,"hhh");
        System.out.println(result2);    //打印被替换掉的元素,ddd
        System.out.println(list);   //打印替换元素后的集合[bbb, hhh, eee]

        //4、查询元素
        String s = list.get(0);     //查询0索引上的元素
        System.out.println(s);  //查询到元素bbb
        System.out.println(list);


    }
}

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

案例1:集合的遍历方式

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

package GGG;

import java.util.ArrayList;

public class hhh {
    public static void main(String[] args) {
        //1、创建集合对象
        //泛型:限定集合中存储数据的类型
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        //System.out.println(list);   //打印添加元素之后的集合[aaa, bbb, ccc, ddd, eee]
        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:添加数字并遍历

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

补充内容:基本数据类型对应的包装类如下

package GGG;

import java.util.ArrayList;

public class hhh {
    public static void main(String[] args) {
        //1、创建集合对象
        //泛型:限定集合中存储数据的类型
        ArrayList<Integer> list = new ArrayList<>();      //注意存储数据的类型为整数
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
             System.out.println(list);   //打印添加元素之后的集合
        //循环遍历
        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("]");
    }
}

3、添加学生对象并遍历的两个练习

案例1:添加学生对象并遍历

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

package GGG;

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

import java.util.ArrayList;

public class hhh {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        //2、创建学生对象
        Student s1 = new Student("张三",23);
        Student s2 = new Student("李四",24);
        Student s3 = new Student("王二",22);

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

        for (int i = 0; i < list.size(); i++) {
            //i索引 list.get(i)  元素/学生对象
            Student stu = list.get(i);
            System.out.println(stu.getName() + "," + stu.getAge());
        }
    }
}

案例2:添加学生对象并遍历

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

package GGG;

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

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

public class hhh {
    public static void main(String[] args) {
        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);
        }
        for (int i = 0; i < list.size(); i++) {
            //i索引 list.get(i)  元素/学生对象
            Student stu = list.get(i);
            System.out.println(stu.getName() + "," + stu.getAge());
        }
    }
}

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

案例1:添加用户对象,并判断是否存在

1、main方法中定义一个集合,存入三个用户对象。

用户属性为:id,username,password

2、要求:定义一个方法,根据id查找对应的用户信息。若存在返回true,若不存在返回false

package HHH;

public class User {
    //1、私有化成员变量
    //2、空参构造方法
    //3、带全部参数的构造方法
    //4、get/set方法
    private  String id ;
    private  String username ;
    private   String password;
    public User() {
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

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

public class Dome {
    public static void main(String[] args) {
        ArrayList<User> list1 = new ArrayList<>();
        //2、键盘录入学生的信息,并添加到集合当中
        Scanner sc = new Scanner(System.in);
        User u1 = new User("001", "zhangsan", "123");
        User u2 = new User("002", "lisi", "456");
        User u3 = new User("003", "wanger", "789");

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

        boolean ss = search(list1, "005");
        System.out.println(ss);
    }
    public static boolean search(ArrayList<User> list,String id){
        for (int i = 0; i < list.size(); i++) {
            //i索引 list.get(i)  元素/用户对象
            User u = list.get(i);
            if(u.getId().equals(id)){
                return true;
            }
        }
        return false;
    }

}

案例2:添加用户对象,并判断是否存在

1、main方法中定义一个集合,存入三个用户对象。

用户属性为:id,username,password

2、要求:定义一个方法,根据id查找对应的用户信息。若存在返回索引,若不存在返回-1

package HHH;

public class User {
    //1、私有化成员变量
    //2、空参构造方法
    //3、带全部参数的构造方法
    //4、get/set方法
    private  String id ;
    private  String username ;
    private   String password;
    public User() {
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

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

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

public class Dome {
    public static void main(String[] args) {
        ArrayList<User> list1 = new ArrayList<>();
        //2、键盘录入学生的信息,并添加到集合当中
        Scanner sc = new Scanner(System.in);
        User u1 = new User("001", "zhangsan", "123");
        User u2 = new User("002", "lisi", "456");
        User u3 = new User("003", "wanger", "789");

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

        int ss = search(list1, "002");
        System.out.println(ss);
    }
    public static int search(ArrayList<User> list,String id){
        for (int i = 0; i < list.size(); i++) {
            //i索引 list.get(i)  元素/用户对象
            User u = list.get(i);
            if(u.getId().equals(id)){
                return i;
            }
        }
        return -1;
    }

}

5、集合练习-返回多个数据

案例1:添加手机对象,并返回要求的数据。

需求:定义Javabean类:Phone

Phone属性:品牌、价格。

main方法中定义一个集合,存入三个手机对象。

分别为:小米,1000。苹果,8000。锤子,2999。

定义一个方法,将价格低于3000的手机信息返回。

package GGGG;

import java.util.ArrayList;

public class PhoneDome {
    public static void main(String[] args) {
        ArrayList<Phone> list = new ArrayList<>();
        Phone p1 = new Phone("小米",1000);
        Phone p2 = new Phone("苹果",8000);
        Phone p3 = new Phone("锤子",2999);

        list.add(p1);
        list.add(p2);
        list.add(p3);
        
        //新建集合,提取方法返回的集合
        ArrayList<Phone> phoneInfoList = printf(list);
        
        //循环遍历新得到的集合元素
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.getName()+","+phone.getPrice());
        }
    }

    //由于返回值为对象,所以用ArrayList<Phone>作为返回值类型
    public static ArrayList<Phone> printf(ArrayList<Phone> list){
        /**技巧:
         * 如果我们要返回多个数据,可以先把这些数据放到一个容器当中,再把容器返回
         * 容器可以为 集合 数组
         */
        //定义一个集合用于存储价格低于3000的手机对象
        ArrayList<Phone> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            //如果当前的手机价格低于3000,那么就把手机对象添加到resultList中
            if(p.getPrice() < 3000){
                //System.out.println(p.getName());
                //System.out.println(p.getPrice());
                resultList.add(p);
            }
        }
        return resultList;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值