JavaSE(08) - 集合 - ArrayList

发布时间 2023-10-04 22:14:47作者: 大宝贝94106

JavaSE(08) - 集合 - ArrayList

p111 ArrayList基本使用

创建集合对象 , 泛型 : 限定集合中的数据类型. 在jdk7中,后面的<>中可以不写数据类型.

集合在底层做了一些处理, 打印对象不是地址值, 而是集合中存储的内容.

public class ArrayListBasic {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> list = new ArrayList<>();
        //增,添加成功返回true,我们一般不关注他的返回值
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        //删,可以删除元素,删除成功返回true. 还可以通过索引删除(索引规则和数组,字符串一样),删除成功返回被删除的元素.
//        boolean aaa = list.remove("aaa");
//        String remove0 = list.remove(1);
        //改,通过索引修改元素,返回被覆盖的元素
//        String aaa1 = list.set(0, "aaa");
        //查,返回指定索引的元素
        String s = list.get(1);
        //长度,
        int size = list.size();
        //遍历集合(使用get,size方法)
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            String s1 = list.get(i);
            if (i == list.size() - 1) {
                System.out.print(s1);
            } else System.out.print(s1 + ", ");
        }
        System.out.println("]");
    }
}

p112 集合练习 - 包装类

集合中只能存储引用数据类型,所以要添加基本数据类型必须要用它们的包装类

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

byte --Byte

short --Short

char --Character

int --Integer

long --Long

float --Float

double --Double

boolean --Boolean

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

public class ArrayListDemo_Integer {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Integer> list = new ArrayList<>();
        //添加元素,jdk5之后int 和 Integer之间可以互相转换
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        //遍历集合
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            Integer integer = list.get(i);
            if (i == list.size() - 1) {
                System.out.print(integer);
            } else System.out.print(integer + ", ");
        }
        System.out.println("]");
    }
}

p113 集合练习- 添加学生对象并遍历

/*p113 集合练习- 添加学生对象并遍历
* 键盘录入3个学生信息
* 两个注意点: 
* 1.创建集合时,集合初始长度为0,添加对象遍历集合时不能用 "i<list.size()"方法,
* 要写需要添加对象的个数.
* 2.添加对象遍历集合时,不能把创建学生对象的语句写在循环外面,否则就是反复赋值一个对象了.
* */
public class addStudentObject {
    public static void main(String[] args) {
        //创建集合
        ArrayList<student> list = new ArrayList<>();
        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();
            s.setName(name);//赋值给对象的属性
            s.setAge(age);
            //把对象添加到集合
            list.add(s);
        }
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            student s = list.get(i);
            System.out.println(s.getName() + ", " + s.getAge());
        }
    }
}

练习3,添加用户对象并判断是否存在

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

小技巧: 在创建对象并给属性赋值时,你如果忘记了构造方法里属性的顺序,就可以用快捷键 CTRL+P 显示提示.

/*练习3,添加用户对象并判断是否存在
需求: 1.main方法中定义一个集合, 存入3个对象.用户属性为: id,username,password
      2.要求:定义一个方法, 根据id查找对应的用户信息.  如果存在,返回true  如果不存在,返回false
						如果存在,返回索引,如果不存在,返回-1*/
public class DoesUserExist {
    public static void main(String[] args) {
        //定义一个集合
        ArrayList<user> list = new ArrayList<>();
        //创建3个对象,用户属性为: id,username,password
        user u1 = new user("001", "George", "123456");
        user u2 = new user("002", "Mike", "m123");
        user u3 = new user("003", "Marie", "123abc");
        //存入集合.
        list.add(u1);
        list.add(u2);
        list.add(u3);
        //查找
        System.out.println(getIndex("001", list));
        System.out.println(isExist("001",list));
    }

    //定义一个方法, 根据id查找对应的用户信息,如果存在,返回索引,如果不存在,返回-1
    public static int getIndex(String id, ArrayList<user> list) {
        for (int i = 0; i < list.size(); i++) {//遍历集合
            String userId = list.get(i).getId();//获得元素对象的ID属性
            if (userId.equals(id)) {//和形参比较
                return i;       //返回索引
            }
        }
        return -1;
    }
    //根据id查找对应的用户信息,如果存在返回true,如果不存在就返回false.
    //可以调用getIndex方法,如果getIndex方法返回-1就是不存在.
    public static boolean isExist(String id, ArrayList<user> list) {
        return getIndex(id, list) >= 0;
    }
}

p115 集合练习 - 返回多个数据

返回多个数据 - 添加手机对象并返回要求的数据
需求: 定义Javabean类,Phone Phone的属性: 品牌(brand), 价格(price).
main方法中定义一个集合, 存入3个手机对象. 分别为:小米,1000. 苹果,8000. 锤子,2999.
定义一个方法, 将价格低于3000的手机信息返回.

技巧: 如果我们要返回多个数据,可以先把数据放到一个容器中(集合,数组),再把容器返回.

package ArrayList;

import java.util.ArrayList;

/*p115 练习4 - 返回多个数据 - 添加手机对象并返回要求的数据
需求: 定义Javabean类,Phone   Phone的属性: 品牌(brand), 价格(price).
main方法中定义一个集合, 存入3个手机对象.  分别为:小米,1000. 苹果,8000. 锤子,2999.
定义一个方法, 将价格低于3000的手机信息返回.*/
public class returnMultipleNumbers {
    public static void main(String[] args) {
        //定义一个集合
        ArrayList<Phone> list = new ArrayList<>();
        //创建3个对象
        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> phoneMassage = getPhoneMassage(list);
        printArrayList(phoneMassage);
    }
    //返回价格低于3000的手机信息
    //如果我们要返回多个数据,可以先把数据放到一个容器中(集合,数组),再把容器返回,
    public static ArrayList<Phone> getPhoneMassage(ArrayList<Phone> list) {
        //新建集合,用来装要返回数据
        ArrayList<Phone> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            int price = p.getPrice();
            //如果price 小于3000 就把此对象添加到result集合中
            if (price < 3000) {
                result.add(p);
            }
        }
        return result;//返回集合
    }
    //遍历集合方法
    public static void printArrayList(ArrayList<Phone> list) {
        for (int i = 0; i < list.size(); i++) {
            Phone phone = list.get(i);
            System.out.println(phone.getBrand() + "," + phone.getPrice());
        }
    }
}