DW-CHEN的Java点滴记录-集合

集合和数组的特点对比

  • 共同点:都是存储数据的容器
  • 不同点:数组的容量时固定的,集合的容量是可变的
  • 如果存储的数据,长度经常发生改变,推荐使用集合

ArrayList

构造方法
方法名说明
public ArrayList()创建一个空的集合对象
public boolean add(E e)将指定的元素追加到集合的末尾
public void add(int index, E element)在此集合中指定的位置插入指定的元素
常用方法
方法名说明
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回修改的元素
public E get(int index)返回指定索引处的元素
public int size返回集合中的元素个数

代码

键盘录入三个字符串数据并添加到集合,然后遍历集合在控制台打印
package cn.cdw.demo;

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

/**
 * @author DW-CHEN
 * 键盘录入三个字符串数据并添加到集合,然后遍历集合在控制台打印
 */
public class Demo34 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<String> arrayList = new ArrayList<>();

        for (int i = 0; i < 3; i++) {
            System.out.print("请输入第" + (i + 1) + "个字符串:");
            String s = scanner.nextLine();
            arrayList.add(s);
        }
        System.out.println(arrayList);
        System.out.println("===================================");
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
    }
}

键盘录入3个学生对象的姓名,年龄并保存到集合中,然后遍历出学生对象的信息
package cn.cdw.demo;

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

/**
 * @author DW-CHEN
 * 键盘录入3个学生对象的姓名,年龄并保存到集合中,然后遍历出学生对象的信息
 */
public class Demo35 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Student> studentArrayList = new ArrayList<>();

        for (int i = 0; i < 3; i++) {
            System.out.print("请输入第"+(i+1)+"个学生的姓名:");
            String name = scanner.next();
            System.out.print("请输入第"+(i+1)+"个学生的年龄:");
            int age = scanner.nextInt();

            Student student = new Student();
            student.setName(name);
            student.setAge(age);
            studentArrayList.add(student);//添加到集合
        }

        for (int i = 0; i < studentArrayList.size(); i++) {
            Student student = new Student();
            student = studentArrayList.get(i);
            System.out.println(student.getName() + "今年" + student.getAge() + "岁了");
        }
    }
}

class Student{//学生类
    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 cn.cdw.demo;

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

/**
 * @author DW-CHEN
 * 根据键盘录入的数据和数组中匹配的数据进行全部删除
 * 例如:键盘录入 abc,集合中的数据有[a,b,abc,d,abc,e],最后处理结果为[a,b,d,e]
 */
public class Demo36 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你想要删除的数据:");
        String string = scanner.nextLine();

        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("abc");
        arrayList.add("d");
        arrayList.add("abc");
        arrayList.add("e");

        for (int i = 0; i < arrayList.size(); i++) {
            if (string.equals(arrayList.get(i))) {
                arrayList.remove(i);
                i--;//注意删除对应的索引后,集合的整体索引会发生移动,所以需要将查询索引进行跟对应变化
            }
        }
        System.out.println(arrayList);
    }
}

遍历存储学生对象的集合,筛选出年龄小于等于18的学生对象存储到另一个集合中
package cn.cdw.demo;

import java.util.ArrayList;

/**
 * @author DW-CHEN
 * 遍历存储学生对象的集合,筛选出年龄小于等于18的学生对象存储到另一个集合中
 */
public class Demo37 {
    public static void main(String[] args) {
        ArrayList<Student1> student1ArrayList = new ArrayList<>();
        ArrayList<Student1> newArrayList = new ArrayList<>();//存储小于等于18岁的学生对象

        Student1 s1 = new Student1("小明", 12);
        Student1 s2 = new Student1("小李", 22);
        Student1 s3 = new Student1("小红", 17);
        Student1 s4 = new Student1("小小", 23);
        Student1 s5 = new Student1("小哥", 15);

        student1ArrayList.add(s1);
        student1ArrayList.add(s2);
        student1ArrayList.add(s3);
        student1ArrayList.add(s4);
        student1ArrayList.add(s5);

        for (int i = 0; i < student1ArrayList.size(); i++) {//遍历存储学生对象的集合,筛选出年龄小于等于18的学生对象保存到新的集合中
            Student1 student1 = new Student1();
            student1 = student1ArrayList.get(i);
            if (student1.getAge() <= 18) {//年龄小于等于
                newArrayList.add(student1);
            }
        }

        for (int i = 0; i < newArrayList.size(); i++) {//遍历存储小于等于18岁的学生对象的集合
            Student1 student1 = new Student1();
            student1 = newArrayList.get(i);
            System.out.println(student1.getName() + "今年" + student1.getAge() + "岁了");
        }
    }
}
class Student1{//学生类
    private String name;
    private int age;

    public Student1() {

    }

    public Student1(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 cn.cdw.demo;

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

/**
 * @author DW-CHEN
 * 学生管理程序
 */
public class Demo38 {
    static ArrayList<Student2> arrayList = new ArrayList();//定义一个集合用于存储学生数据

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        end:while (true) {
            System.out.println("========================学生管理程序========================");
            System.out.println("1 添加学生");
            System.out.println("2 删除学生");
            System.out.println("3 修改学生");
            System.out.println("4 显示所有学生");
            System.out.println("5 退出程序");
            System.out.print("友情提示:请输入你的选择:");
            String num = scanner.nextLine();

             switch (num) {
                case "1":
                    add();
                    break;
                case "2":
                    delete();
                    break;
                case "3":
                    update();
                    break;
                case "4":
                    show();
                    break;
                case "5":
                 System.out.println("谢谢使用...");
                    break end;
                default:
                    System.out.println("输入有误,请重新输入");
            }
        }
    }

    public static void add() {//添加方法
        Scanner scanner = new Scanner(System.in);

        String  id;
        while (true) {//优化学生编号不重复
            System.out.print("请输入学生编号:");
             id = scanner.next();
            int index = getIndex(arrayList, id);//如果该id不存在则返回-1
            if (index != -1) {//-1表示不存在
               System.out.print("该学生编号已存在,请重新输入学生编号:");
                id = scanner.next();
            }else {
                break;//学生编号不重复,结束循环
            }
        }
        System.out.print("请输入姓名:");
        String name = scanner.next();
        System.out.print("请输入年龄:");
        int age = scanner.nextInt();

        Student2 student2 = new Student2(id,name,age);
        arrayList.add(student2);//添加到集合中
        show();//添加好数据后自动调用显示所有数据方法进行数据显示
        }

    public static void delete() {//删除方法
        show();
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你想要删除学生的编号:");
        String id = scanner.next();

        int index = getIndex(arrayList, id);
        if (index != -1) {
            for (int i = 0; i < arrayList.size(); i++) {
                Student2 student2 = arrayList.get(i);
                if (id.equals(student2.getId())) {
                    arrayList.remove(i);
                }
            }
        }else {
            System.out.println("数据不存在");
        }
        show();
    }

    public static void update() {//修改方法
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入你想要修改学生的编号:");
        String id = scanner.next();
        int index = getIndex(arrayList, id);

        if (index != -1) {
            System.out.print("请输入修改姓名:");
            String name = scanner.next();
            System.out.print("请输入修改年龄:");
            int age = scanner.nextInt();

            Student2 student2 = arrayList.get(index);
            student2.setId(id);
            student2.setName(name);
            student2.setAge(age);
        }else {
            System.out.println("数据不存在");
        }
        show();
    }

     public static void show() {//查询所有数据
            for (int i = 0; i < arrayList.size(); i++) {
                Student2 student2 = new Student2();
                student2 = arrayList.get(i);
                System.out.println("id:"+student2.getId()+"  姓名:" + student2.getName() + "  年龄:" + student2.getAge());
            }
    }

    public static int getIndex(ArrayList<Student2> arrayList,String id) {//根据学生id查询,如果没有则返回-1
        int index = -1;//默认没有
        for (int i = 0; i < arrayList.size(); i++) {
            Student2 student2 = arrayList.get(i);
            String sid = student2.getId();
            if(id.equals(sid)) {
                index = i;//存在,记录元素索引的真正位置
            }
        }
        return index;//不存在,返回-1
    }

}

class Student2 {//学生类
    private String id;
    private String name;
    private int age;

    public Student2() {

    }

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

    public String getId() {
        return id;
    }

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值