Arraylist

本文详细介绍了ArrayList集合的使用,包括构造器、添加元素、删除元素、修改元素等方法,并通过实例展示了泛型的支持、集合遍历、删除指定条件元素、存储自定义对象以及按学号搜索学生信息等功能。示例代码清晰易懂,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.ArrayList

ArrayList集合快速入门

ArrayList是集合中的一种,它支持索引。

对象获取:

构造器                                                                       说明

public ArrayList( )                                             创建一个空的集合对象

ArrayList集合添加元素的方法

方法名                                                                    说明

public boolean add(Ee)                                将指定的元素追加到此集合的末尾

public void add(int index,E element)           在此集合中的指定位置插入指定的元素

package com.ArrayList;

import java.util.ArrayList;

public class ArrayList01 {
    public static void main(String[] args) {
        //1.创建集合对象
        ArrayList list=new ArrayList();
        //2.添加数据
        list.add("Java");
        list.add("Java");
        list.add("Mysql");
        System.out.println(list);
        //指定索引位置插入索引
        list.add(1,"迪丽热巴");
        System.out.println(list);
    }
}

ArrayList对于泛型的支持

泛型概述:ArrayList<E>:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。

例子:ArrayList<String> :此集合只能操作字符串类型的元素。

ArrayList<integer>:此集合只能操作整数类型的元素。

注意:集合中只能存储引用类型,不支持基本数据类型。

ArrayList常用API、遍历

方法名称                                                                      说明

public E get(int index)                                  返回指定索引处的元素

public int size()                                            返回集合中的元素的个数

public E remove(int index)                           删除指定索引处的元素,返回被删除的元素

public boolean remove(Object o)                删除指定的元素,返回删除是否成功

public E set(int index,E element)                修改指定索引处的元素,返回被修改的元素

package com.ArrayList;

import java.util.ArrayList;

public class ArrayList02 {
    public static void main(String[] args) {
        ArrayList<String >list=new ArrayList<>();
        list.add("Java");
        list.add("java");
        list.add("HySQL");
        list.add("MyBatis");
        list.add("HTML");
       // 1. public E get(int index):
        String e = list.get(3);
        System.out.println(e);
       // 2. public int sizeo。获取集合的大小《元素个数)
        System.out.println(list.size());
        //3.完成集合的遍历
        for (int i =0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //4、public E remove(int index)。剧除某个索引位置处的元素值,并返回被删除的元素值
        System.out.println(list); //[Java,Java,MySQL,MyBatis,HTNL]
        String e2=list.remove(2);
        System.out.println(e2);
        System.out.println(list);
        //5.
    }
}

ArrayList集合案例:遍历并删除元素

某个班级的考试在系统上进行,成绩大致为: 98,77,66,89,79,50,100

现在需要先把成绩低于80分以下的数据去掉。

分析:定义ArrayList集合存储多名学员的成绩。

遍历集合每个元素,如果元素值低于80分,去掉它。

package com.ArrayList;

import java.util.ArrayList;

public class ArrayList03 {
    public static void main(String[] args) {
        //创建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);
        //低于80分成绩从集合中去掉
        //法一
       /* 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);
            }
        }
        System.out.println(scores);
    }
}

ArrayList集合案例:存储自定义类型的对象

某影院系统需要在后台存储上述三部电影,然后依次展示出来。

分析:定义一个电影类,定义一个集合存储电影对象。

创建3个电影对象,封装相关数据,把3个对象存入到集合中去。

遍历集合中的3个对象,输出相关信息。

package com.ArrayList;

import java.util.ArrayList;

public class ArrayList04 {
    public static void main(String[] args) {
        //定义电影类
        //创建3个电影对象
        movie e1 = new movie("《肖生克的救赎》", 9.7, "罗宾斯");
        movie e2=new movie("《霸王别姬》",9.7,"张国荣,张丰毅");
        movie e3=new movie("《阿甘正传》",9.5,"汤姆.汉克斯");
        //创建集合
        ArrayList<movie> movies=new ArrayList<>();
        movies.add(e1);
        movies.add(e2);
        movies.add(e3);
        System.out.println(movies);
        //遍历每个电影对象
        for (int i = 0; i < movies.size(); i++) {
            //
            movie m=movies.get(i);
            System.out.println("电影名称:"+m.getName());
            System.out.println("电影得分:"+m.getScore());
            System.out.println("电影主演:"+m.getActor());
        }
    }
}

package com.ArrayList;

public class movie {
    private  String name;
    private  double score;
    private String actor;


    public movie() {
    }

    public movie(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;
    }
}

结论:集合中存储的元素并不是对象本身,而是对象的地址。

ArrayList集合案例:元素搜索

学生信息系统的数据搜索:

后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能。

分析:定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来。

提供一个方法,可以接收ArrayList集合,和要搜索的学号,返回搜索到的学生对象信息,并展示。

使用死循环,让用户可以不停的搜索。

package com.ArrayList;

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

public class ArrayList05 {
    public static void main(String[] args) {
        //定义学生类
        //创建集合存储学生对象 创建学生对象封装学生对象
        ArrayList<student> students=new ArrayList<>();
        students.add(new student("20180302","呼孤城",23,"护理一斑"));
        students.add(new student("20180303","东方不败",23,"”推拿二班"));
        students.add(new student("20180384","西门欧雪",26,"中药学四班"));
        students.add(new student("26186305","梅超风",26,"神经科2班"));
        //遍历学生信息
        System.out.println("学号\t名称\t年龄\t班级");
        for (int i = 0; i < students.size(); i++) {
            student s=students.get(i);
            System.out.println(s.getStudynumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname());
        }
        //定义方法 按照学号搜索功能
        Scanner sc=new Scanner(System.in);
        while(true){
            System.out.println("输入学号查询学生对象:");
            String studynumber=sc.next();
            //调用方法
            student s=getstudentbyid(students,studynumber);
            //判断是否存在学生对象
            if(s==null){
                System.out.println("对不起,查无此人");
            }else {
                System.out.println("查询学生对象如下:");
                System.out.println(s.getStudynumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassname());
            }

        }
    }
    /**
     * 根据学生学号查询学生对象返回
     * @param students   存储全部学生对象部分
     * @param studynumber 搜索的学生学号
     * @return  学生对象 null
     */
    public  static student getstudentbyid(ArrayList<student> students,String studynumber){
        //遍历全部学生对象
        for (int i = 0; i < students.size(); i++) {
            student s=students.get(i);
            //询问当前遍历学生学号是否是要找的学号
            if (s.getStudynumber().equals(studynumber)){
                return s;
            }
        }
        //查无此人
        return null;
    }

}

package com.ArrayList;

public class student {
    private String studynumber;
    private String name;
    private int age;
    private String classname;

    public student() {
    }

    public student(String studynumber, String name, int age, String classname) {
        this.studynumber = studynumber;
        this.name = name;
        this.age = age;
        this.classname = classname;
    }

    public String getStudynumber() {
        return studynumber;
    }

    public void setStudynumber(String studynumber) {
        this.studynumber = studynumber;
    }

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

    public String getClassname() {
        return classname;
    }

    public void setClassname(String classname) {
        this.classname = classname;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是秀秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值