你好,游客 登录 注册 搜索
背景:
阅读新闻

ArrayList集合 深入理解

[日期:2017-06-12] 来源:Linux社区  作者:Dylansuns [字体: ]

集合出现的原因
数组存储数据是固定存储 ,当遇到要存储数据的个数不确定的时候 数组就不满足了,集合就出现了
集合存储数据的个数,可以随着数据量的变化而变化,不会造成越界或者大量的空间浪费
存储数据的个数是可变的

ArrayList:
java.util包下
底层维护了一个数组
线程不同步(处理速度快)

创建ArrayList对象的格式:
ArrayList<E> 集合名字 = new ArrayList<E>();
<E>: 泛型, 代表了集合中要存储的数据类型, 想存什么类型 就把E改成什么类型 , 如要存储String类型的数据 就把E改成String


注意: 集合只能存储引用类型的数据


基本数据类型 对应的引用数据类型表示形式
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

ArrayList常见功能
添加
public boolean add(E e)
public void add(int index,E element) // 在指定的索引位置添加元素

获取元素
public E get(int index)// 根据索引值获取元素


获取元素个数
public int size() //获取元素个数

删除元素
public boolean remove(Object o) // 直接删除元素
public E remove(int index) //根据索引删除元素 ,并把删除的元素返回

修改元素
public E set(int index,E element)// 使用element 去替换指定索引的元素 , 并返回被替换的元素

学生管理系统练习
学生信息包括 : 学号 姓名 年龄 家乡
打印欢迎语句
打印对应的功能 , 并接收用户的输入

1.查看学生信息
如果系统没有学生信息 则给出对应的提示
如果系统中有学生信息, 则按照指定的格式打印学生信息
2.添加学生信息
从键盘录入学生的信息 组成对象 添加到集合中
根据学号去重,只有没重复的学号才能添加到集合中

3.修改学生信息
根据学号找到学生进行修改
如果没有学号则给出对应的提示
如果找到学号则继续收集新信息, 使用新信息修改原来的元素
4.删除学生信息
根据学号删除学生
如果没有指定学号则给出指定的提示
如果有学号则删除指定的元素
5.退出学生信息管理系统
提示退出
并结束程序

代码演示

public static void main(String[] args) {
        // 初始化数据
        // 创建一个集合容器 可以存储学生的信息
        ArrayList<Student> list = new ArrayList<Student>();
        // =========================测试数据================================
//        Student s1 = new Student("9001", "阿拉甲", "18", "迪拜");
//        Student s2 = new Student("9002", "阿拉yi", "18", "迪拜");
//        Student s3 = new Student("9003", "阿拉饼", "18", "迪拜");
//        list.add(s1);
//        list.add(s2);
//        list.add(s3);
//        System.out.println("初始化完毕");
        // =========================测试数据================================

        System.out.println("-------------------欢迎使用学生管理系统------------------------");

        // 死循环
        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.println("请输入对应功能的序号");
            System.out.println("=================================");
            // 接收用户的输入
            Scanner sc = new Scanner(System.in);
            int user = sc.nextInt();
            // 根据用户的输入进行功调用
            switch (user) {
            case 1:
                show(list);
                break;
            case 2:
                add(list);
                break;
            case 3:
                upd(list);
                break;
            case 4:
                del(list);
                break;
            case 5:
                System.out.println("感谢使用管理系统 欢迎下次再来哦  ");
                // 终止虚拟机
                System.exit(0);
                // return;
                break;

            default:
                System.out.println("对不起 没有这个功能 ,请控制你自己 ");
                break;
            }
        }
    }

    // 功能方法s
    public static void del(ArrayList<Student> list) {
        // 1.提示输入学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        String id = sc.next();

        // 2.查找
        // 定义标记
        int index = -1;
        // 遍历比较 并修改
        for (int i = 0; i < list.size(); i++) {
            Student tmp = list.get(i);
            if (tmp.getId().equals(id)) {
                // 找到了
                // 改变标记
                index = i;
                break;
            }
        }
        // 3.判断结果
        // 判断标记
        if (index == -1) {
            // 没有找到
            System.out.println("您输入的学号 咱们系统没有, 请重新选择功能");
        } else {
            // 找到了 执行删除
            list.remove(index);
            System.out.println("删除完毕");
        }
    }

    public static void upd(ArrayList<Student> list) {
        // 1.提示输入学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        String id = sc.next();

        // 2.查找
        // 定义标记
        int index = -1;
        // 遍历并比较
        for (int i = 0; i < list.size(); i++) {
            Student tmp = list.get(i);
            if (tmp.getId().equals(id)) {
                // 找到了
                // 修改标记
                index = i;
                break;
            }
        }
        // 3.根据查找的结果做不同的动作
        // 判断标记
        if (index == -1) {
            // 没找到,
            System.out.println("您输入的学号 咱们系统中没有 ,请重新选择功能 ");
        } else {
            // 找到了
            // 3.收集其他信息
            System.out.println("请输入新姓名");
            String name = sc.next();
            System.out.println("请输入新年龄");
            String age = sc.next();
            System.out.println("请输入新家乡");
            String home = sc.next();
            // 4.组成对象添加到集合中
            Student s = new Student(id, name, age, home);
            // 修改
            list.set(index, s);
            System.out.println("修改完毕");
        }

    }

    public static void add(ArrayList<Student> list) {
        // 1.提示输入学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        String id = sc.next();
        // 2.根据学��去重

        // 使用用户输入的学号去集合中查找, 如果找到与用户输入的学号一样的学号表示有重复,此时要继续提示输入学号,并继续去重
        // 直到用户输入的学号与集合中元素的学号不一致的时候再收集其他的信息
        while (true) {
            // 定义一个标记 给一个默认值
            int index = -1;
            // 遍历集合获取元素的学号与用户输入的学号进行比较
            for (int i = 0; i < list.size(); i++) {
                Student tmp = list.get(i);
                if (tmp.getId().equals(id)) {
                    // 表示重复
                    // 修改标记
                    index = i;
                    break;
                }
            }

            // 判断标记
            if (index == -1) {
                // 没有重复
                break;
            } else {
                // 有重复
                System.out.println("您输入的学号 重复了 ,请重新输入学号 ");
                id = sc.next();

            }
        }

        // 3.收集其他信息
        System.out.println("请输入姓名");
        String name = sc.next();
        System.out.println("请输入年龄");
        String age = sc.next();
        System.out.println("请输入家乡");
        String home = sc.next();
        // 4.组成对象添加到集合中
        Student s = new Student(id, name, age, home);
        list.add(s);
        System.out.println("添加完毕");
    }

    public static void show(ArrayList<Student> list) {
        // 1.判断集合是否有元素
        if (list.size() == 0) {
            // 如果没有给出特定的提示
            System.out.println("系统中没有学生的信息,请选择添加功能");
        } else {
            // 如果有就按照指定格式遍历
            System.out.println("================学生信息如下====================");
            System.out.println("学号\t\t姓名\t\t年龄\t\t家乡");
            // 遍历集合获取学生信息
            for (int i = 0; i < list.size(); i++) {
                Student tmp = list.get(i);
                System.out
                        .println(tmp.getId() + "\t\t" + tmp.getName() + "\t\t" + tmp.getAge() + "\t\t" + tmp.getHome());
            }
            System.out.println("====================================");
        }
        System.out.println("展示完毕");
    }

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-06/144652.htm

linux
相关资讯       ArrayList集合 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款