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)

大家都在看

  • 自定义表单 动态表单 表单设计器 流程引擎 设计方案

    作流模块——————————- 1.模型管理 :web在线流…

    数据库 2023年6月6日
    081
  • 记一次MySql唯一索引在left join连表查询没走索引的问题

    在新建一张账单结算信息表bill_settlement_info的时候,建立的唯一索引uk_bill_no(bill_no,tenant_id)。由于列表查询用到该表的字段。所以在…

    数据库 2023年6月16日
    076
  • 正则表达式

    正则表达式:REGEXP,REGular EXPression。正则表达式分为两类: Basic REGEXP(基本正则表达式 Extended REGEXP(扩展正则表达式) 元…

    数据库 2023年6月15日
    0142
  • 数据库基础,看完这篇就够了!

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月11日
    097
  • 今日🎸吉他练到这儿

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16750421.html Or…

    数据库 2023年6月11日
    0102
  • SNMP基础简介

    近来,公司产品开发涉及到SNMP方面的知识, 在此作一些总结,或许对您现在或者将来有用。 在目前越来越复杂的网络环境中,整个环境有各种各样的网络设备,为了能更好的对这些设备进行管理…

    数据库 2023年6月11日
    089
  • HTTP 协议概述

    什么是 HTTP 协议 什么是协议? 协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。所谓 HTTP 协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的…

    数据库 2023年6月11日
    077
  • MySQL 的日志:binlog

    前言:binlog 用于记录数据库执行 写入性操作的日志信息,以二进制的形式保留在磁盘中。它是由 Server 层进行记录的,使用任何存储引擎都会产生 binlog。 实验准备 我…

    数据库 2023年5月24日
    088
  • MySQL<=>是什么鬼

    类似于相等比较 =运算符 官网描述 NULL-safe equal. This operator performs an equality comparison like the …

    数据库 2023年6月9日
    0105
  • MySQL金额数字转为大写中文

    MySQL版本:5.7.34-log通过创建函数的方法,目前可以实现整数金额的转换,网上暂未找到MySQL版本的故自己参照其他数据库版本的改编了一下, 仅供参考!!!使用方法:se…

    数据库 2023年5月24日
    078
  • Java中,那些关于String和字符串常量池你不得不知道的东西

    老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true。 String s1 = new Strin…

    数据库 2023年6月16日
    096
  • 入门Python,看完这篇就行了!

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/3bbc3146.html 你好,我是测试蔡坨坨。 众所周知,Python语法简洁、功能强大,通过简单的…

    数据库 2023年6月11日
    0108
  • Mysql查询优化

    mysq查询l优化 指标:执行时间 检查的行数 返回的行数 explain关键字 — 实际SQL,查找用户名为Jefabc的员工 select * from emp where …

    数据库 2023年5月24日
    0119
  • 线程池执行流程图

    public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeU…

    数据库 2023年6月16日
    0132
  • centos 自己常用命令

    tar 1. 使用tar压缩文件 tar -zcvf test.tar.gz ./test/ 该命令表示压缩当前文件夹下的文件夹test,压缩后缀名为test.tar.gz 如果不…

    数据库 2023年6月11日
    082
  • 深入浅出的分析 Hashtable

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、Ide…

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