ArrayList

ArrayList与数组的区别:

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

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

ArrayList泛型

ArrayList

案例一:

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

  • 1.定义ArrayList集合存储多名学员的成绩。

  • 2.遍历集合每个元素,如果元素低于80分,去掉它。
public static void arrayListSeeAndDelete() {
        //目标;学习遍历并删除原数的正确方案
        // 1.创建一个ArrayList集合存储一个班级学生的成绩
        ArrayList 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集合存储三部电影对象
  • 遍历电影类型中的每个电影对象,访问其信息并输出

电影类及其构造方法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;
    }
}

主函数部分:

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 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("--------------------------------");
        }
    }

输出结果

`java
[javaBase.practice.ArrayListMovieShow@1b6d3586, javaBase.practice.ArrayListMovieShow@4554617c, javaBase.practice.ArrayListMovieShow@74a14482]
电影名:《肖申克的救赎》
电影得分:9.8
电影主演:罗宾斯
电影名:《阿甘正传》
电影得分:9.6
电影主演:汤姆·汉克斯

Original: https://www.cnblogs.com/zhangyouren/p/16412012.html
Author: Haziy
Title: ArrayList

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619933/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Servlet中跨域问题详解

    一、什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。 浏览器从一个域名的网页去请求另一个域名的资源时…

    数据库 2023年6月14日
    090
  • MySQL 服务无法启动。服务没有报告任何错误。

    版本8.0.25,今天启动发现抱错,网上搜索一下发现这样可行 启动MySQL报错: 搜索了一下,按照这样步骤解决了 1.配置一下my.ini [mysqld] basedir =&…

    数据库 2023年6月16日
    071
  • MySQL让人又爱又恨的多表查询

    前言 在SQL开发当中,多表联查是绝对绕不开的一种技能。同样的查询结果不同的写法其运行效率也是千差万别。 在实际开发当中,我见过(好像还写过~)不少又长又臭的查询SQL,数据量一上…

    数据库 2023年5月24日
    070
  • gauss正则找汉字

    select substring( ‘沙特阿拉伯6.20’ from ‘[\u4E00-\u9FA5]{2,5}’ )返回 ‘沙特阿拉伯’ Original: https://ww…

    数据库 2023年6月16日
    066
  • Redis——数据操作

    2022-09-20 Redis——select Redis数据库中的数据库的个数为: 16个,使用0号数据库开始的,到第15个数据库结束。 在ubantu中,进入Redis客户端…

    数据库 2023年6月14日
    061
  • 最小化安装killall不可用

    最小化安装killall不可用 最小化安装 Centos7.4后,发现killall命令不可用使用了以下命令,查看软件包名: yum search killall 查找后发现应使用…

    数据库 2023年6月15日
    067
  • bat 脚本启用及禁用网卡

    启用网卡 需要以管理员身份运行bat脚本 netsh interface set interface "Npcap Loopback Adapter" enab…

    数据库 2023年6月9日
    0115
  • 解决Tomcat部署工件中无子模块的工件

    本文是在尝试了刷新Maven项目、clean了Maven缓存并且重启IDEA之后任然无法在Tomcat中找到子模块对应的工件,这时就要试着模仿着自己创建一个模块父类的pom.xml…

    数据库 2023年6月16日
    073
  • Mysql数据库存取原理及性能优化

    一、Mysql的系统架构图 二、Mysql存储引擎 Mysql中的数据是通过一定的方式存储在文件或者内存中的,任何方式都有不同的存储、查找和更新机制,这意味着选择不同的方式对于数据…

    数据库 2023年6月14日
    092
  • CSS样式

    css概述 层叠样式表(cascading style sheet) 层叠是指==将多个样式施加在一个元素(标签)上== 作用: 美化页面 将html代码与样式代码分离 好处: 功…

    数据库 2023年6月16日
    084
  • MySQL的select for update用法

    MySQL中的select for update大家应该都有所接触,但什么时候该去使用,以及有哪些需要注意的地方会有很多不清楚的地方,我把我如何使用和查询到的文档在此记录。 sel…

    数据库 2023年5月24日
    0128
  • 一元二次方程

    通过分析古巴比伦泥板上的代数问题,可以发现在公元前2250年古巴比伦人就已经掌握了与求解一元二次方程相关的代数学知识,并将之应用于解决有关矩形面积和边的问题。 [2] 相关的算法可…

    数据库 2023年6月11日
    086
  • Eureka详解系列(三)–探索Eureka强大的配置体系

    通过前面的两篇博客,我们知道了:什么是 Eureka?为什么使用 Eureka?如何使用 Eureka?今天,我们开始来研究 Eureka 的源码,先从配置部分的源码开始看,其他部…

    数据库 2023年6月6日
    0198
  • 未婚妻晚安之后依然在线,于是我用20行代码写了个小工具

    最近发现未婚妻一到晚上总是很忙的样子,每晚匆匆忙忙道过晚安就不说话了。 可是,QQ头像却会偶尔亮起来,我非常担心,是不是账号被盗了呢?然后,就想帮未婚妻排查一下,于是就用pytho…

    数据库 2023年6月14日
    065
  • ansible碎碎念

    Using a SSH password instead of a key is not possible because Host Key checking is enabled…

    数据库 2023年6月11日
    063
  • Java学习-第一部分-第三阶段-第四节:JDBC和数据库连接池

    JDBC和数据库连接池 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 下载会使用到的包 JDBC概述 基本介绍…

    数据库 2023年6月11日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球