Java中ArrayList集合

一、概述

ArrayList集合是程序中最常见的一种集合,属于引用类型,在AyyayList内部封装了一个长度可变的数组,当存储元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,可以看做ArrayList是一个长度可变的数组。

1、创建集合

  • 导包:import java.util.ArrayList;
  • 创建对象:ArrayList<要存储的数据类型>  变量名  =  new  ArrayList<要存储的数据类型>();

注意:<要存储的数据类型>中必须为引用数据类型

2、基本数据类型对应应用数据类型

基本数据类型对应的引用数据类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

3、创建方式 

  • 存储String类型的元素:ArrayList<String>  list  =  new  ArrayList<String>();
  • 存储int类型的元素:ArrayList<Integer>  list  =  new  ArrayList<Integer>();
  • 创建自己定义的Student类型的数据:ArrayList<Student>  list  = new  ArrayList<Student>();

集合和数组的区别:

  • 集合的长度是可变的,数组的长度是固定的

  • 集合中存储的元素必须是引用类型数据

二、代码实例

实例1:存储元素

package List;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args)
    {
        ArrayList<String> List = new ArrayList<>();     //创建集合
        List.add("hello ");     //添加元素
        List.add("my ");
        List.add("love!");
        System.out.println(List);       //打印整个集合
        System.out.println(List.size());        //获取集合元素个数
        System.out.println(List.get(0));        //获取第一个元素
        System.out.println(List.get(1));        //获取第二个元素
        System.out.println(List.get(2));        //获取第三个元素
        System.out.println("==================================");
        for(int i = 0;i < List.size();i++)        //遍历打印集合
        {
            System.out.println(List.get(i));
        }
    }
}

实例2:存储Student类,对学生的信息进行封装,并随机获取一个学生信息

Student.java文件:

package myList;

//创建学生类
public class Student {
    private String name;
    private int age;

    public Student()
    {
    }

    public void setAge(int age)
    {
        this.age = age;
    }

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

    public int getAge()
    {
        return age;
    }

    public String getName()
    {
        return name;
    }

}

Main.java文件

package myList;

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

public class Main {
    public static void main(String[] args)
    {
        ArrayList<Student> List = new ArrayList<Student>();     //创建一个容器存储学生信息
        addStudentList(List);       //添加学生信息
        pritnStudentList(List);     //打印学生信息
        randomStudentList(List);        //随机抽取某个学生信息
    }

    //添加学生信息
    public static void addStudentList(ArrayList<Student> List)
    {
        Scanner Sca = new Scanner(System.in);
        for(int i = 0;i < 3;i++)
        {
            Student Stu = new Student();
            Stu.setAge(Sca.nextInt());
            Stu.setName(Sca.next());
            List.add(Stu);
        }
    }

    //打印学生信息
    public static void pritnStudentList(ArrayList<Student> List)
    {
        for(int i = 0;i < List.size();i++)
        {
            Student s = List.get(i);
            System.out.println(s.getAge());
            System.out.println(s.getName());
        }
    }

    //随机抽取某个学生信息
    public static void randomStudentList(ArrayList<Student> List)
    {
        int net = new Random().nextInt(List.size());
        Student S = List.get(net);
        System.out.println(S.getAge());
        System.out.println(S.getName());
    }
}

 

### Java ArrayList 集合排序方法 #### 字符串类型的ArrayList排序 对于包含字符串类型数据的`ArrayList`,可以直接利用`List.sort()`方法进行排序。由于`String`类已经实现了`Comparable`接口,所以可以按照自然顺序(即字典顺序)对列表中的元素进行升序排列。 ```java import java.util.ArrayList; import java.util.List; public class StringSortExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Banana"); list.add("Apple"); list.add("Orange"); list.add("Grapes"); // 使用 List.sort() 对字符串进行升序排序 list.sort(null); System.out.println("按字母顺序排序后的字符串列表: " + list); } } ``` 这段代码展示了如何创建一个存储水果名称的`ArrayList`实例,并调用`sort()`函数对其进行排序[^2]。 #### 整数类型的ArrayList排序 当处理的是整数值时,同样可以通过内置的方式轻松完成排序任务: ```java import java.util.ArrayList; import java.util.Collections; public class IntegerSortExample { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(5); numbers.add(3); numbers.add(9); // 升序排序 Collections.sort(numbers); System.out.println("升序排序后的整数列表:" + numbers); } } ``` 这里采用了`Collections.sort()`来进行升序排序操作[^3]。 #### 自定义对象的ArrayList排序 如果要对自定义的对象数组进行排序,则需让该类实现`Comparable<T>`接口并覆盖其中的`compareTo(T o)`方法来指定比较逻辑。之后就可以像之前那样使用`Collections.sort()`或`List.sort()`来进行排序了。 ```java class Person implements Comparable<Person>{ private String name; private int age; public Person(String n, int a){ this.name=n; this.age=a; } @Override public int compareTo(Person p){ return Integer.compare(this.age,p.age); // 按年龄大小排序 } @Override public String toString(){ return "[Name="+this.name+", Age="+this.age+"]"; } } // 测试部分 import java.util.*; public class CustomObjectSort{ public static void main(String []args){ List<Person> people=new ArrayList<>(); people.add(new Person("Alice", 27)); people.add(new Person("Bob", 21)); // 调用 sort 方法,默认会根据我们设置好的规则(这里是人的年龄) people.sort(null); for (Person person : people) { System.out.println(person.toString()); } } } ``` 上述例子中,先定义了一个名为`Person`的类,并让它实现了`Comparable<Person>`接口,在里面指定了两个`Person`对象之间的比较依据——年龄。接着在一个测试程序里创建了一些`Person`对象组成的列表,并对其进行了排序[^5]。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ONESTAR博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值