ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ArrayList

2022-06-25 17:32:21  阅读:182  来源: 互联网

标签:ArrayListMovieShow ArrayList 电影 add score scores


ArrayList集合


ArrayList与数组的区别:

1. 数组和ArrayList的本质区别在于前者是类型安全的,而后者是类型不安全的.
2. ArrayList为了兼容所有类型对象,使用了Object数组,在使用元素的时候会有装箱和拆箱的操作,降低了程序的性能.
3. ArrayList会动态扩充容量,容量为原来的2倍.
4. ArrayList只有把元素添加进去之后才可以通过下标访问相应的元素.
5. 数组在创建的时候就已经确定了数据类型,并且它的长度是固定的,只能通过下标改变各个元素的值和访问.

如果已经知道数据的长度并且不需要频繁的做插入和删除操作,建议使用数组,反之亦然.

ArrayList泛型

ArrayList<数据类型/类名> 集合名 = new ArrayList<>();
<>尖括号里的是泛型String Integer Character Boolean等引用数据类型
如果不写泛型,那么集合里什么元素都能存储,list.add(1); list.add(“abc”);
都可以存储,这样是不安全。
例如:加上那么这个集合里只能存String类型的数据,如果list.add(1); 则会报错

案例一:

目标:学习遍历并删除元素的正确方案

需求

  • 某个班级的考试在系统上进行,成绩大致为 0 ~ 100之间
  • 现在需要先把成绩低于80分的数据去掉

分析:

  • 1.定义ArrayList集合存储多名学员的成绩。
  • 2.遍历集合每个元素,如果元素低于80分,去掉它。

案例一 代码:

public static void arrayListSeeAndDelete() {
        //目标;学习遍历并删除原数的正确方案
        // 1.创建一个ArrayList集合存储一个班级学生的成绩
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(98);
        scores.add(77);
        scores.add(66);
        scores.add(89);
        scores.add(79);
        scores.add(50);
        scores.add(100);
        System.out.println(scores);
        /*
        方法一:
         */
        // 2.把低于80分的成绩从集合中去掉
        // scores = [98, 77, 66, 89, 79, 50, 100]
        // scores = [98, 77, 66, 89, 79, 50, 100]
       /* for (int i = 0; i < scores.size(); i++) {
            int score = scores.get(i);
            if (score < 80) {
                scores.remove(i);
                i--; //删除成功后,必须退一步才能保证后面不满足条件的元素不被跳过
            }
        }
        System.out.println(scores);*/
       /*
       方法二:
       倒着遍历再删除
        */
        for (int i = scores.size() - 1; i >= 0; i--) {
            int score = scores.get(i);
            if (score < 80) {
                scores.remove(i); // 可以避免跳过删除
        }


    }
}

案例二:

目标:理解ArrayList集合存储自定义类型的对象,并且对集合中对象进行遍历

需求

  • 定义电影类
  • 创建三个电影对象
  • 创建一个电影类型的ArrayList集合存储三部电影对象
  • 遍历电影类型中的每个电影对象,访问其信息并输出

案例二 代码Part Ⅰ:

电影类及其构造方法get/set方法。

public class ArrayListMovieShow {

    //目标:理解ArrayList集合存储自定义类型的对象
    // 1.定义电影类。 ArrayListMovieShow
    private String name;
    private double score;
    private String actor;

    public ArrayListMovieShow(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

案例二 代码Part Ⅱ:

主函数部分:

public static void main(String[] args) {
        // 2.创建三个电影类
        ArrayListMovieShow m1 = new ArrayListMovieShow("《肖申克的救赎》", 9.8, "罗宾斯");
        ArrayListMovieShow m2 = new ArrayListMovieShow("《霸王别姬》", 9.7, "张国荣、张丰毅");
        ArrayListMovieShow m3 = new ArrayListMovieShow("《阿甘正传》", 9.6, "汤姆·汉克斯");
        // 3.创建一个电影类型的ArrayList集合,存储三个电影对象
        ArrayList<ArrayListMovieShow> movies = new ArrayList<>();
        movies.add(m1);
        movies.add(m2);
        movies.add(m3);
        System.out.println(movies); //输出三个电影对象的地址
        // 4.遍历电影类型的集合中的每个电影对象。访问他的信息即可
        for (int i = 0; i < movies.size(); i++) {
            ArrayListMovieShow m = movies.get(i);
            System.out.println("电影名:" + m.getName());
            System.out.println("电影得分:" + m.getScore());
            System.out.println("电影主演:" + m.getActor());
            System.out.println("--------------------------------");
        }
    }

输出结果

[javaBase.practice.ArrayListMovieShow@1b6d3586, javaBase.practice.ArrayListMovieShow@4554617c, javaBase.practice.ArrayListMovieShow@74a14482]
电影名:《肖申克的救赎》
电影得分:9.8
电影主演:罗宾斯
--------------------------------
电影名:《霸王别姬》
电影得分:9.7
电影主演:张国荣、张丰毅
--------------------------------
电影名:《阿甘正传》
电影得分:9.6
电影主演:汤姆·汉克斯
--------------------------------

案例来自B站黑马,如有错误请多多交流。

标签:ArrayListMovieShow,ArrayList,电影,add,score,scores
来源: https://www.cnblogs.com/zhangyouren/p/16412012.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有