Java中的ArrayList集合详解

ArrayList

对于Arraylist来说,有一个尖括号代表泛型。
泛型:依旧是装在集合当中的所有元素,全都是统一的什么类型。
注意泛型只能是引用类型,不能是基本类型。
扩展:如果希望集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。

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

注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容
如果内容是空,得到的是空的中括号:[]

import java.util.ArrayList;

public class demo02Arraylist {
    public static void main(String[] args) {
        //创建一个ArrayList集合,集合的名称是list,
        //面装的全都是String字符串类型的数据,在后面的插入时候只能插入字符串类型
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //向集合当中添加一些数据,需要用到add方法(尾插法)
        list.add("111");
        System.out.println(list);//[111]

        list.add("222");
        list.add("333");
        list.add("444");
        System.out.println(list);//[111, 222, 333, 444]
    }
}

如果想要添加一些整数的基本类型,则需要改变泛型的类型:

import java.util.ArrayList;

public class demo02ArrayListBasic {
    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();

        //错误的写法!,泛型只能是引用类型,不能是基本类型
        //ArrayList<int> listB = new ArrayList<>();

        ArrayList<Integer> listB = new ArrayList<>();
        listB.add(100);
        listB.add(200);
        listB.add(300);
        System.out.println(listB);//[100, 200, 300]

        //从JDK1.5+开始,支持自动装箱,自动拆箱
        //自动装箱:基本类型 -->  包装类型
        //自动拆箱:包装类型 -->  基本类型
        //Integer num = listB.get(2);
        int num = listB.get(2);
        System.out.println("第二号元素是:"+num);//第二号元素是:300
    }
}

下面介绍一些ArrayList集合常用方法和遍历:

ArrayList当中的常用方法有:
public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致
public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
public E remove(int index) :从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。

实例代码:

import java.util.ArrayList;

public class demo02ArraylistMethod {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //向集合中添加元素
        boolean success = list.add("000");
        System.out.println(list);//[000]
        System.out.println("添加是否成功:"+success);//添加是否成功:true

        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        System.out.println(list);//[000, 111, 222, 333, 444]

        //得到集合中指定位置的集合元素,集合是从0开始的
        String getString = list.get(2);
        System.out.println("得到的元素为:"+getString);//得到的元素为:222

        //获取集合中元素的个数
        int size = list.size();
        System.out.println("此时集合中元素个数为:"+size);//此时集合中元素个数为:5

        //删除指定位置处的元素
        String removeString = list.remove(3);
        System.out.println("被移除的元素为:"+removeString);//被移除的元素为:333

        //再次查看集合元素的个数,看是否少一
        System.out.println("此时元素的个数为:"+list.size());//此时元素的个数为:4
    }
}

ArrayList常用的遍历方法:

import java.util.ArrayList;

public class demo02ArrayListEach {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("1111");
        list.add("2222");
        list.add("3333");
        
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

ArrayList练习1:生成6个1~33之间的随机整数添加到集合,并遍历集合。

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

public class demo02ArrayListRandom {
    public static void main(String[] args) {
        //创建Random对象
        Random r = new Random();

        //创建ArrayList对象
        ArrayList<Integer> list = new ArrayList<>();

        //添加随机数到集合
        for(int i = 1; i<= 6; i++){
            list.add(r.nextInt(33)+1);//r.nextInt(33)+1为产生的随机数,范围在[1,33]
        }

        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

ArrayList练习2,自定义5个学生对象,添加到集合并遍历:


import java.util.ArrayList;

//学生类的定义
public class Student {
    String name;
    int age;

    public Student() {
    }

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

//主类
public class demo02ArrayListStudent {
    public static void main(String[] args) {
        //创建ArrayList集合对象
        ArrayList<Student> list = new ArrayList<>();

        //创建学生对象
        Student s1 = new Student("111",11);
        Student s2 = new Student("222",22);
        Student s3 = new Student("333",33);
        Student s4 = new Student("444",44);
        Student s5 = new Student("555",55);


        //把学生对象作为元素添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);

        //遍历结合:for ,size,get
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getName() +"--------"+list.get(i).getAge());
        }

    }
}

ArrayList练习3(ArrayList集合作为参数),定义一指定格式打印集合的方法(ArrayList类型座位参数),使用{}扩起集合,使用@分割每个元素,格式参照{元素@元素@元素}:

import java.util.ArrayList;

public class demo02ArrayListPrint {
    public static void main(String[] args) {
        //创建一个ArrayLis对象
        ArrayList<String> list = new ArrayList<>();

        //添加元素到集合中
        list.add("洪七公");
        list.add("张无忌");
        list.add("杨过");
        System.out.println(list);//[洪七公, 张无忌, 杨过]

        //调用方法
        PrintList(list);//{洪七公@张无忌@杨过}
    }
    public static void PrintList(ArrayList<String> list){//注意这里的泛型也要写上
       //拼接左括号
        System.out.print("{");

        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            if(i == (list.size() -1) ){//在打印最后一个元素的时候要注意后面要有“}”封闭
                System.out.print(list.get(i)+"}");
            }else {
                System.out.print(list.get(i)+"@");
            }
        }
        
    }
    
}

ArrayList练习4(ArrayList集合作为返回值),用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中,要求使用自定义的方法来实现筛选:

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

public class demo02ArrayListReturn {
    public static void main(String[] args) {
        //创建ArrayList对象
        ArrayList<Integer> list = new ArrayList<>();

        //创建Random对象
        Random r = new Random();

        //向集合中添加20个元素
        for(int i = 0; i < 20; i++){
            list.add(r.nextInt(20)+1);
        }
        //未调用筛选方法之前
        System.out.println(list);

        //打印并且调用筛选方法
        System.out.println(arrayListReturn(list));

    }

    /**
     * 三要素:返回值类型,方法名称,参数列表
     * @param list
     * @return
     */
    public static ArrayList<Integer> arrayListReturn(ArrayList<Integer> list){
        //循环查找
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i) % 2 == 0){//是偶数则继续
                continue;
            }else {
                list.remove(i);//不是偶数则移除集合
                i--;//同时需要把变量i的值-进行1操作
            }
        }
        
        return list;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43751200/article/details/106783260