Day11-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;
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据你的要求进行回答。这是一个使用Java语言定义Employee类的示例: ```java import java.util.ArrayList; public class Employee implements Comparable<Employee> { private String name; private double sal; private MyDate birthday; public Employee(String name, double sal, MyDate birthday) { this.name = name; this.sal = sal; this.birthday = birthday; } public String getName() { return name; } public double getSal() { return sal; } public MyDate getBirthday() { return birthday; } public void setName(String name) { this.name = name; } public void setSal(double sal) { this.sal = sal; } public void setBirthday(MyDate birthday) { this.birthday = birthday; } @Override public String toString() { return "Employee{" + "name='" + name + '\'' + ", sal=" + sal + ", birthday=" + birthday + '}'; } @Override public int compareTo(Employee o) { int result = this.name.compareTo(o.name); if (result == 0) { result = this.birthday.compareTo(o.birthday); } return result; } } ``` 上述代码中,我们定义了一个名为Employee的类,其中包含了三个private成员变量:name、sal和birthday。其中,birthday是MyDate类的对象。我们为每一个属性定义了getter和setter方法,并重写了toString方法,用于输出name、sal和birthday。 在这个类中,我们还实现了Comparable接口,并重写了compareTo方法,用于对Employee对象进行排序。我们首先按照name排序,如果name相同,则按照birthday的先后排序。 接下来,我们来看一下MyDate类的定义: ```java public class MyDate { private int year; private int month; private int day; public MyDate(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public int getYear() { return year; } public int getMonth() { return month; } public int getDay() { return day; } public void setYear(int year) { this.year = year; } public void setMonth(int month) { this.month = month; } public void setDay(int day) { this.day = day; } @Override public String toString() { return year + "-" + month + "-" + day; } public int compareTo(MyDate o) { if (this.year != o.year) { return this.year - o.year; } else if (this.month != o.month) { return this.month - o.month; } else { return this.day - o.day; } } } ``` 在上述代码中,我们定义了一个名为MyDate的类,其中包含了三个private成员变量:year、month和day。我们为每一个属性定义了getter和setter方法,并重写了toString方法,用于输出日期信息。 在这个类中,我们还实现了Comparable接口,并重写了compareTo方法,用于对MyDate对象进行排序。我们按照年份、月份和日分别进行比较,以实现对日期的排序。 接下来,我们来看一下如何创建Employee对象,并将这些对象放入ArrayList集合中进行排序: ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String[] args) { ArrayList<Employee> list = new ArrayList<>(); list.add(new Employee("Tom", 10000, new MyDate(1990, 10, 1))); list.add(new Employee("Jerry", 20000, new MyDate(1995, 5, 3))); list.add(new Employee("Mickey", 15000, new MyDate(1992, 8, 2))); Collections.sort(list, new Comparator<Employee>() { @Override public int compare(Employee o1, Employee o2) { return o1.compareTo(o2); } }); for (Employee employee : list) { System.out.println(employee.toString()); } } } ``` 在上述代码中,我们首先创建了三个Employee对象,并将它们放入ArrayList集合中。接着,我们调用Collections.sort方法对集合中的元素进行排序。为了实现按照name和birthday排序的功能,我们传入了一个Comparator对象,并重写了compare方法。最后,我们历输出集合中的元素,以查看排序结果。 通过以上的代码示例,我们可以学习到如何在Java中定义类、使用泛型、实现接口、重写方法、创建对象、调用方法等基本的编程技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值