Java基础07——集合

Java基础07——集合

  • 一、集合和数组的对比
  • 二、ArrayList成员方法
  • 三、集合练习
    • 1. 添加数字并遍历
    • 2. 添加学生对象并遍历
      • 学生类
      • 测试类
      • 输出结果
    • 3. 添加用户对象并判断是否存在
      • 用户类
      • 测试类
      • 输出结果
    • 4. 添加手机对象并返回要求的数据(返回多个数据)
      • 手机类
      • 测试类
      • 输出结果

一、集合和数组的对比

  • 长度:
    • 数组:长度固定
    • 集合:长度可变
  • 存储类型:
    • 数组:可以存基本数据类型和引用数据类型
    • 集合:可以存引用数据类型,基本数据类型需要包装类才能存
基本数据类型 包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean

二、ArrayList成员方法

  • 打印ArrayList实例,输出的是集合中存储的数据内容,不是地址值。
  • E代表范型,限定集合中存储数据的类型。
方法名 说明
boolean add(E e) 添加元素,返回值代表是否添加成功
boolean remove(E e) 删除置顶元素,返回值代表是否删除成功
E remove(int index) 删除指定索引的元素,返回被删除元素
E set(int index, E e) 修改指定索引下的元素,返回原来的元素
E get(int index) 获取指定索引的元素
int size() 集合的长度,集合中元素的个数
import java.util.ArrayList;

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

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

        // 删除元素
        list.remove("aaa");
        System.out.println(list);
        list.remove(0);
        System.out.println(list);


        // 修改元素
        list.set(0, "000");
        System.out.println(list);

        // 查询元素
        String s = list.get(0);
        System.out.println(s);

        // 获取长度
        int size = list.size();
        System.out.println(size);

        // 遍历
        System.out.println("-----遍历-----");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

Java基础07——集合_第1张图片

三、集合练习

1. 添加数字并遍历

  • 需求:定义一个集合,添加数字,并进行遍历。
import java.util.ArrayList;

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

        // 添加元素
        list.add(1);
        list.add(2);
        list.add(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基础07——集合_第2张图片

2. 添加学生对象并遍历

  • 需求:定义一个集合,键盘录入一些学生对象,并进行遍历。
  • 学生类的属性为:姓名,年龄。

学生类

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

测试类

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

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

        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            Student s = new Student();
            System.out.println("请输入学生姓名");
            String name = scanner.next();
            System.out.println("请输入学生年龄");
            int age = scanner.nextInt();

            s.setName(name);
            s.setAge(age);

            list.add(s);
        }
        for (int i = 0; i < list.size(); i++) {
            Student student = list.get(i);
            System.out.println(student.getName() + ", " + student.getAge());
        }
    }
}

输出结果

Java基础07——集合_第3张图片

3. 添加用户对象并判断是否存在

  • 需求:
    1. main方法中定义一个集合,存入三个用户对象。用户属性为:id,username,password
    1. 定义一个方法,根据id查找对应的用户信息,如果存在返回 索引,如果没有返回-1。

用户类

public class User {
    private String id;
    private String username;
    private String mm;

    public User() {
    }

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

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return username
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置
     * @param username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取
     * @return password
     */
    public String getMm() {
        return mm;
    }

    /**
     * 设置
     * @param mm
     */
    public void setMm(String mm) {
        this.mm = mm;
    }

    public String toString() {
        return "User{id = " + id + ", username = " + username + ", mm = " + mm + "}";
    }
}

测试类

import java.util.ArrayList;

public class UserTest {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        User u1 = new User("001", "zs", "123456");
        User u2 = new User("002", "ls", "12345678");
        User u3 = new User("003", "ww", "1234qwer");

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

        int index = getIndex(list, "002");
        System.out.println("索引是:" + index);
    }

    public static int getIndex(ArrayList<User> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
}

输出结果

Java基础07——集合_第4张图片

4. 添加手机对象并返回要求的数据(返回多个数据)

  • 需求:定义一个手机类,属性为:品牌、价格。
  • main方法中定义一个集合,存入三个手机对象,分别为:小米,1000;苹果,8000;锤子,2999。
  • 定义一个方法,将价格低于3000的手机信息返回。
  • 如果要返回多个数据,可以把这些数据放到一个容器当中,再把容器返回。

手机类

public class Phone {
    private String brand;
    private int price;

    public Phone() {
    }

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

    /**
     * 获取
     * @return brand
     */
    public String getBrand() {
        return brand;
    }

    /**
     * 设置
     * @param brand
     */
    public void setBrand(String brand) {
        this.brand = brand;
    }

    /**
     * 获取
     * @return price
     */
    public int getPrice() {
        return price;
    }

    /**
     * 设置
     * @param price
     */
    public void setPrice(int price) {
        this.price = price;
    }

    public String toString() {
        return "Phone{brand = " + brand + ", price = " + price + "}";
    }
}

测试类

import java.util.ArrayList;

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

        Phone xiaomi = new Phone("小米", 1000);
        Phone apple = new Phone("苹果", 8000);
        Phone hammer = new Phone("锤子", 2999);

        list.add(xiaomi);
        list.add(apple);
        list.add(hammer);

        ArrayList<Phone> phoneInfoList = getPhoneInfo(list);
        System.out.println("小于3000的手机有:");
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.toString());
        }
    }

    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        ArrayList<Phone> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone phone = list.get(i);
            if (phone.getPrice() < 3000) {
                resultList.add(phone);
            }
        }
        return resultList;
    }
}

输出结果

Java基础07——集合_第5张图片

你可能感兴趣的:(Java,java,数据结构,开发语言)