文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java ArrayList集合详解(Java动态数组)

2024-04-02 19:55

关注

一、ArrayList集合的概述和基本使用

1.概述

ArrayList是集合的一种实现,Collection是所有集合类的父类。

由于数组在运行期间的长度无法改变,所以有了ArrayList集合。

2.基本使用

创建ArrayList集合


import java.util.ArrayList;//不要忘记导包
//<E>代表泛型,E可以定义为所有的引用类型,例如String、类等
ArrayList<E> list = new ArrayList<>();

将其它类型的集合转为ArrayList


ArrayList<String> setList = new ArrayList<>(new HashSet())

常用的方法

(1)添加数据 - add()


ArrayList<String> list = new ArrayList<>();
list.add("csdn");

(2)获取数据 - get()


list.get(i);//i为集合的元素索引

(3)删除数据 - remove()


list.remove(i);//i为集合的元素索引

(4)获取集合长度 - size()


int l = list.size();
System.out.println("集合的长度是:"+l);

二、ArrayList集合的详细介绍

1.定义一个ArrayList集合

(1)语法格式


ArrayList<E> list = new ArrayList<>();

(2)解读

<E>代表泛型,代表集合里装的类型

泛型只能是引用类型,不能是基本类型

对于ArrayList集合,直接打印的结果并不是地址值,而是内容,如果是空则打印 []

从jdk1.7开始右侧尖括号内部可以不写内容

2.ArrayList集合常用的方法

定义集合

定义一个泛型为String的ArrayList集合


ArrayList<String> list = new ArrayList<>();
System.out.println(list);//打印结果为:[]

添加元素

public boolean add(E e):向集合中添加元素,类型与泛型一致


//只能添加字符串类型,其他类型会报错
list.add("CSDN");
list.add("aaaa");
list.add("bbbb");
System.out.println(list);
//打印集合结果为:[CSDN, aaaa, bbbb]

通过ArrayList类的可以看出add方法有一个布尔类型的返回值,可以用于返回添加数据是否成功。


boolean res = list.add("ssss");
System.out.println("添加是否成功"+res);

对于ArrayList集合来说,使用add方法一定会添加成功(其它集合不一定),所以可以不使用add方法的返回值。

获取元素

public E get(int index):从集合中获取元素,参数index代表元素索引编号。


//获取集合的第 1 个元素
String strAdd = list.get(0);
System.out.println(Str);//结果为:CSDN
//根据添加顺序,第 0 号元素应为 “CSDN”

get方法有一个与集合定义时对应的泛型的返回值,接收数据时应注意数据类型。

删除元素

public E remove(int index):从集合中删除元素,参数index代表元素索引编号。


//删除集合的第 3 个元素
String strRemove = list.remove(2);
System.out.println("被删除的是:" + str);

remove方法有一个与集合定义时对应的泛型的返回值,在执行删除操作后可以将数据接收,查看被删除的数据。

获取集合长度

public int size():获取集合长度


int l = list.size();
System.out.println("集合的长度是:"+l);

3.将"类"存入ArrayList集合

(1)首先定义一个Student的标准类


public class Student {
    private String name;
    private int age;
    public Person() {}
    public Person(String name, int age) {this.name = name;this.age = age;}
    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;}
}

(2)创建集合存入"类"


import java.util.ArrayList;
public class Test {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Studentn> list = new ArrayList<>();
        //创建要存储的对象
        Student s1 = new Student("张三",17);
        Student s2 = new Student("李四",18);
        //将对象信息存入集合
        list.add(s1);
        list.add(s2);
        //使用匿名对象的方式存入也可以,因为这个对象只会被使用一次
        list.add(new Student("王五",19));
        //直接打印集合,会显示为对象的内存地址值
        System.out.println(list);
        //因此要想取出数据,必须再次创建对象接收数据
        Student p11 = list.get(0);
        System.out.println("姓名:"+p11.getName()+",年龄:"+p11.getAge());
    }

4.遍历ArrayList集合


import java.util.ArrayList;

public class ArrayListEach {
    public static void main(String[] args) {
     //创建集合对象
        ArrayList<String> list = new ArrayList<>();
        //添加数据
        list.add("aaaa");
        list.add("bbbb");
        list.add("cccc");
  //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }    
}

5.将基本数据类型存入ArrayList集合

如果希望向ArrayList集合里放基本数据类型,必须使用基本类型对应的包装类。

基本类型对应的包装类如下:

基本类型 包装类(引用类型,包装类都位于java.lang包下)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

【tips】

除了int和char的包装类不是首字母大写外,其它六种基本类型的包装类均是首字母大写。


import java.util.ArrayList;
public class ArrayListBasic {
    public static void main(String[] args) {
        //从jdk1.5开始可以自动装箱,自动拆箱
        //基本类型 --> 包装类型   装箱
        //包装类型 --> 基本类型   拆箱
        ArrayList<Integer> list = new ArrayList<>();
        list.add(100);
        list.add(200);
        list.add(300);
        //取出数据
        int num = list.get(1);
        System.out.println("取出的数据为:"+num);//结果为:取出的数据为:200
    }
}

6.ArrayList作为方法的参数

案例分析:

1.ArrayList作为参数

2.使用"{ }“作为开结尾,使用”、"分隔每个元素


import java.util.ArrayList;
public class ArrayListParam {
    public static void main(String[] args) {
     //创建集合
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        //System.out.println(list);
        //调用方法;并将创建的集合作为参数,传递给方法
        printArrayList(list);
    }
    
 //编写打印数组的方法,并将ArrayList集合设置为方法的参数
    public static void printArrayList(ArrayList list){
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            if(i == list.size()-1){
                System.out.print(list.get(i));
                System.out.print("}");
            }else {
                System.out.print(list.get(i)+"、");
            }
        }
    }
}

7.ArrayList作为方法的返回值

案例分析:

1.使用ArrayList集合作为方法的返回值

2.使用大集合存放20个数字,并筛选偶数放入小集合


import java.util.ArrayList;
import java.util.Random;
public class ArrayListReturn {
    public static void main(String[] args) {    
        ArrayList<Integer> list = returnArrayList();
        System.out.println(list);
    }
    
 //定义需求方法,并将返回值类型设置为ArrayList集合
    public static ArrayList<Integer> returnArrayList(){
        Random r = new Random();
        //定义大集合
        ArrayList<Integer> listBig = new ArrayList<>();
        //定义小集合
        ArrayList<Integer> listSmall = new ArrayList<>();
        
        for (int i = 0; i < 20; i++) {
            int num = r.nextInt(10);
            //向集合中添加数据
            listBig.add(num);
            //判断添加的数据是否为偶数,如果是,则将数据存入小集合
            if(listBig.get(i)%2 == 0){
                listSmall.add(listBig.get(i));
            }
        }
        System.out.println("偶数一共有:"+listSmall.size()+"个");
        //返回值为小集合
        return listSmall;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯