基于API的ArrayList集合之学习记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、arraylist集合的出现

对象数组的使用

定义一个数组,用来存储3个person对象;
首先新建一个person.java文件,文件中编写:private String name;private int age;
下一行直接输入alt+insert或者在code(代码)里选择generate(生成)(如图1所示)之后点击constructor(构造函数)(如图2所示),之后选择select none(取消选择)(如图3所示),就自动生成无参构造 public person() {
};
图1
图2
图3
结果如下图所示:
在这里插入图片描述
下一行直接输入alt+insert或者在code(代码)里选择generate(生成),之后点击constructor(构造函数),之后按着shift将两个都选上,选择ok(如图所示),就自动生成全参构造 public person(String name, int age) {
this.name = name;
this.age = age;
};
在这里插入图片描述
结果如图所示:
在这里插入图片描述
下一行直接输入alt+insert或者在code(代码)里选择generate(生成),之后点击getter and setter,之后按着shift将两个都选上,选择ok(如图所示),就自动生成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;
}

在这里插入图片描述
在这里插入图片描述
结果如图所示:
在这里插入图片描述
这个时候都定义好了,接下来需要创建对象,直接通过构造方法来进行成员变量的赋值;package cn.demo02;

/*定义一个数组用来存储3个person对象*/
public class array01 {
    public static void main(String[] args) {
//首先创建一个长度为三的数组,用来存放person类型的对象
        person[] array=new person[3];
        //System.out.println(array[0]);//null
        person one=new person("富大龙",18);
        person two=new person("张毅",19);
        person three=new person("淅淅",20);//one two three都是地址值接下来把这三个对象都放到数组里
        //将one当中的地址值赋值到数组的0号元素位
        array[0]=one;
        array[1]=two;
        array[2]=three;
        System.out.println(array[0]);//得到的是one所在的地址值:cn.demo02.person@4554617c
        person person1=array[1];
        System.out.println(person1.getName());//张毅
    }
}

所以任何数据类型都可以作为数组当中元素的类型,这就是对象数组的使用。

对象数组的缺点

**但是数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。

为了弥补对象数组的缺点,出现了arraylist集合

二、arraylist集合概述

1.arraylist集合和数组有什么区别

数组的长度不可以发生改变,但是arraylist集合的长度可以随意变化,这是两者最大的区别所在,java中大多数集合长度都是可以随意改变的,这就解决了长度后来需要发生改变却不能改变这样的缺点。

2.arraylist集合概述

打开API进行搜索,先看包是java.util,类的名称有所不同多了一个尖括号ArrayList,这个尖括号内部有一个大写E,这个E代表泛型。

3.arraylist集合基本使用

在函数中输入arraylist会自动添加导包,对于arraylist来说,有一个代表泛型,泛型也就是装在集合中的所有元素全都是统一的什么类型;注意:泛型只能是引用类型,不能是基本类型。

ArrayList list=new ArrayList<>()

创建一个Arraylist集合,集合的名称是list,里面装的全都是String类型的字符串

备注

从JDK1.7+开始,等号右侧的尖括号内部可以不写内容,但是左侧<>本身还是要写的,系统会默认一样。并且如果向List当中写入string之外其他类型的数据时是错误写法,系统会报错。

System.out.println(list);

系统默认输出//[];

扩展

对于Arraylist集合来说,直接打印得到的不是地址值,而是内容。如果内容是空那么得到的是[];。向集合当中添加一些数据,需要用到add方法。 list.add(“淅淅同学”);//[淅淅同学];

arraylist集合基本使用实践

package cn.demo02;

import java.util.ArrayList;

public class array02 {
    public static void main(String[] args) {
        //创建一个Arraylist集合,集合的名称是list,里面装的全都是String类型的字符串
        //备注;从JDK1.7+开始,等号右侧的尖括号内部可以不写内容,但是左侧<>本身还是要写的,系统会默认一样
        ArrayList<String> list=new ArrayList<>();
        System.out.println(list);//[];扩展:对于Arraylist集合来说,直接打印得到的不是地址值,而是内容
        //如果内容是空那么得到的是[];
        //向集合当中添加一些数据,需要用到add方法。
        list.add("淅淅同学");//[淅淅同学];
        list.add("淅淅同学");
        list.add("淅淅同学");
        list.add("淅淅同学");//[淅淅同学, 淅淅同学, 淅淅同学, 淅淅同学];
        System.out.println(list);
    }
}

arraylist集合基本实践结果

在这里插入图片描述

三、arraylist集合当中常用的方法和遍历

在arraylist集合当中有很多常用的方法,这些方法都可以通过API找到,并且其中也都有中文的说明。
下面整理一些常用的方法;

Arraylist当中的常用方法有:

1.(添加)public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。
2.(读取)public E get(int index):从集合当中获取元素,参数是索引编号,编号从0开始,返回值就是对应位置的元素。
3.(删除)public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
4.public int size():没有参数,获取集合的尺寸长度,返回值是集合中包含的元素个数。
既然掌握四个方法了,那么我们就可以遍历集合了。

常用方法实践

package cn.demo02;

import java.util.ArrayList;

public class arraylistmethod {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        //向集合中添加元素
       boolean success=list.add("淅淅");//在list集合里添加“淅淅”,并把返回值赋予success代表添加是否成功;
        System.out.println(list);//[淅淅]
        System.out.println("添加的方法是否成功"+success);//添加的方法是否成功true
        list.add("淅淅同学");
        list.add("爱学习");
        list.add("爱放风");
        System.out.println(list);//[淅淅, 淅淅同学, 爱学习, 爱放风]
        //从集合中读取元素
        String name=list.get(1);
        System.out.println("第1号索引的位置:"+name);//第1号索引的位置:淅淅同学
        //删除集合中的元素
        String whoremoved = list.remove(2);//删除二号位置元素,并把被删除元素作为返回值赋予whoremoved变量
        System.out.println("被删除的人是:"+whoremoved);//被删除的人是:爱学习
        System.out.println(list);//[淅淅, 淅淅同学, 爱放风]
        //得到集合长度尺寸,也就是其中元素个数
        int size =list.size();
        System.out.println("集合元素的个数是:"+size);//集合元素的个数是:3

    }
}

常用方法实践结果

在这里插入图片描述

遍历集合实践

package cn.demo02;

import java.util.ArrayList;

public class arraylisteach {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("我爱中国");
        list.add("我比你更爱中国");
        list.add("我比你更更爱中国");
        //遍历集合
        for (int i=0;i<list.size();i++)
        {
            System.out.println(list.get(i));
        }
    }
}

遍历集合实践结果

在这里插入图片描述

四、arraylist集合存储基本数据类型

由于arraylist里面只能存放引用型:String,不能存储基本类型比如整型浮点型字符型这样的,那么在我们需要存储基本数据类型的时候**怎么解决?**如果向集合Arraylist当中存放基本类型数据,必须使用基本类型对应的包装类。包装类就是给需要基本数据类型数据套一个壳子。
基本类型(有:byte short int long float double char boolean)
包装类(引用类型,包装类都位于java.long包下,有:Byte Short Integer Long Float Double Character Boolean)

扩展

从JDK1.5+开始,支持自动装箱、自动拆箱。自动装箱:基本类型–>包装类型;自动拆箱:包装类型–>基本类型;

存储基本数据类型实践

package cn.demo02;

import sun.rmi.log.LogInputStream;

import java.util.ArrayList;

public class arraylistbasic {
    public static void main(String[] args) {
        ArrayList<Integer> list1=new ArrayList<>();
        list1.add(333);
        list1.add(666);
        list1.add(999);
        System.out.println(list1);//[333, 666, 999]
        int num=list1.get(2);
        System.out.println("第2号元素是:"+num);//第2号元素是:999
    }
}

存储基本数据类型实践结果

在这里插入图片描述

五、练习

练习题1

生成6个1-33之间的随机整数,添加到集合,并遍历集合。

思路:

1.需要存储6个数字,创建一个集合;
2.产生随机数需要用到random;
3.用循环六次来产生6个随机数字用for循环;
4.循环内调用r.nextTnt(int n),参数是33,也就是0-32;
5.把数字添加到集合中:add;
6.遍历集合用到for,size,get;

代码:

package cn.demo02;

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

public class arraylistrandom {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        Random r=new Random();
        for(int i=0;i<6;i++)
        {
            int num=r.nextInt(33)+1;
            list.add(num);
        }
        //遍历集合
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }
}

运行结果:

在这里插入图片描述

练习题2

自定义4个学生对象,添加到集合,并遍历。

思路:

1.自定义学生类,里面有四个部分。
2.创建一个集合用来存储学生对象。泛型;
3.根据类创建4个学生对象并且赋值。
4.将4个学生对象添加到集合当中:add;
5.遍历集合:for,size,get…

代码:

package cn.demo02;

public class students {
    private String name;
    private int age;

    public students() {
    }

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

package cn.demo02;

import java.util.ArrayList;

public class arrayliststudents {
    public static void main(String[] args) {
        ArrayList<students> list=new ArrayList<>();
        students one=new students("张毅",30);
        students two=new students("富大龙",30);
        students three=new students("吴彦祖",30);
        students four=new students("彭于晏",30);
        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);
        for (int i = 0; i < list.size(); i++) {
          students stu=  list.get(i);
            System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge());
        }
    }
}

运行结果:

在这里插入图片描述

练习题3

按指定格式遍历集合字符串;定义以指定格式打印集合的方法(arraylist类型作为参数),使用{}括起集合,使用@分隔每一个元素。格式参照(元素@元素@元素)。也就是正常情况下我们使用sout(list)打印集合,打印出来的形式为【10,20,30】,现在要求自己定义一个比如叫做printarraylist(list),要求打印出来的形式为{10@20@30}.

思路:

定义方法的三要素:
返回值类型:只是进行,没有运算,没有结果所以用void;
打印方法名称:printarraylist;
参数列表:Arraylist;

代码:

package cn.demo02;

import java.util.ArrayList;

public class arraylistprint {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("喜羊羊");
        list.add("美羊羊");
        list.add("懒羊羊");
        list.add("费羊羊");
        list.add("慢羊羊");
        System.out.println(list);//[喜羊羊, 美羊羊, 懒羊羊, 费羊羊, 慢羊羊]
        printarraylist(list);//{喜羊羊@美羊羊@懒羊羊@费羊羊@慢羊羊}
    }

    public static void printarraylist(ArrayList<String> list) {
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            String name=list.get(i);
            if(i==list.size()-1){
                System.out.print(name+"}");
            }else{
            System.out.print(name+"@");}
        }
    }
}

运行结果:

在这里插入图片描述

练习题4

筛选集合中的随机数。首先用一个大集合存入随机数字,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。

思路:

1.需要创建一个集合,用来存储数字;
2.随机数字就用random nextInt;
3.循环20次,把随机数字放入大集合,for,add。
4.自定义一个方法用来进行筛选,得到小集合。
三要素:
返回值类型:arraylist小集合(里面元素个数不确定);
方法名称:getsmalllist;
参数列表:arraylist大集合(装着20个随机数字);
5.判断是否偶数:num%2==0;
6.如果是偶数就放到小集合里面,否则不放;

代码:

package cn.demo02;

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

public class arraylistxiti4 {
    public static void main(String[] args) {
        ArrayList<Integer> biglist=new ArrayList<>();
        Random r=new Random();
        for (int i = 0; i < 20; i++) {
            int num=r.nextInt(100);
                    biglist.add(num);
        }
        ArrayList<Integer> smalllist=getsmalllist(biglist);
        System.out.println("偶数总个数:"+smalllist.size());
        for (int i = 0; i < smalllist.size(); i++) {
            System.out.println(smalllist.get(i));
        }
    }
//这个方法接受大集合参数返回小集合参数
    public static ArrayList<Integer> getsmalllist (ArrayList<Integer> biglist) {
        ArrayList<Integer> smalllist=new ArrayList<>();
        for (int i = 0; i < biglist.size(); i++) {
            int num=biglist.get(i);
            if(num%2==0){
                smalllist.add(num);
            }
        }
        return smalllist;
    }
}

运行结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淅淅同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值