Java Arraylist 学习笔记

概述

Arraylist集合介绍

泛型概述

Arraylist常用API

Arraylist API方法全览

案例一、遍历删除元素

案例二、存储自定义类对象

案例三、元素搜索


概述

  1. 与数组类似 是一种容器用于装数据
  2. 大小不固定 启动后可以动态变化 类型也可以选择不固定
  3. 适合于元素个数不固定 常进行增删操作的场景
  4. 集合也提供了非常丰富和好用的API和功能

Arraylist集合介绍

  • Arraylist是集合的一种 它支持索引
  • 创建Arraylist对象
//创建一个空集合对象
public Arraylist();
  • 添加元素的方法
//将指定的元素追加到此集合的末尾
boolean add(E e);

//在此集合中指定位置插入指定元素
add(int index,E element);
  • 试例
   public static void main(String[] args) {
        //创建Arraylist集合对象
        ArrayList gather = new ArrayList();

        //添加数据
        gather.add("helloWorld");
        gather.add("小老虎");
        gather.add(123);
        gather.add(1.2);
        //输出
        System.out.println(gather);

该位置执行效果:

[helloWorld, 小老虎, 123, 1.2]


        //插入指定位置指定数据
        gather.add(1,"老八");
        System.out.println(gather);

该位置执行效果:

[helloWorld, 老八, 小老虎, 123, 1.2]
    }

泛型概述

  • 如Arraylist<E>就是一个泛型 以约束集合对象 只能操作某种数据类型
  • 例如:

        Arraylist<String>此集合只能操作字符串类型元素

        Arraylist<Integer>此集合只能操作整数类型元素

基本类型引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

集合只能存储引用类型 但不支持基本数据类型 

 public static void main(String[] args) {
        //创建Arraylist集合对象 这里定义只能接收String类型数据
        ArrayList<String> gather1 = new ArrayList(); //字符串泛型类

        //添加数据
        gather1.add("helloWorld");
        gather1.add("小老虎");

        //这里定义只能接收整数类型数据
        ArrayList<Integer> gather2 = new ArrayList();
        //添加数据
        gather2.add(2);
        gather2.add(3);

    }

Arraylist常用API

E get(int index)返回指定索引处元素
int size()返回集合中元素个数
E remove(int index)删除指定索引处元素,返回被删除的元素
boolean remove(Object o)删除指定元素 返回删除是否成功
E set(int index,E element)修改指定索引元素 返回被修改的元素
public static void main(String[] args) {
        //创建Arraylist集合对象 这里定义只能接收String类型数据
        ArrayList<String> gather1 = new ArrayList(); //字符串泛型类

        //添加数据
        gather1.add("helloWorld");
        gather1.add("小老虎");
        gather1.add("嗨嗨ha");
        gather1.add("老八蜜汁小憨包");

        //E get(int index)	返回指定索引处元素
        String e1 = gather1.get(2);
        System.out.println(e1);

执行结果:

嗨嗨ha

        //int size()	返回集合中元素个数
        System.out.println(gather1.size());

执行结果:

4

        //结合前两个完成集合遍历
        for (int i = 0; i <gather1.size() ; i++) {
            System.out.println(gather1.get(i));

        }

执行结果:

helloWorld
小老虎
嗨嗨ha
老八蜜汁小憨包

        //E remove(int index)	删除指定索引处元素,返回被删除的元素
        String e2 = gather1.remove(2);

执行结果:

true


        //boolean remove(Object o)	删除指定元素 返回删除是否成功 成功返回true 失败返回false
        System.out.println(gather1.remove("helloWorld"));

执行结果:

小老虎

        //int size(int index,E element)	修改指定索引元素 返回被修改的元素
        String e3 = gather1.set(0,"小白兔");
        System.out.println(e3);
        System.out.println(gather1);

执行结果:

[小白兔, 老八蜜汁小憨包]

    }

    

Arraylist API方法全览

方法描述
add()将元素插入到指定位置的 arraylist 中
addAll()添加集合中的所有元素到 arraylist 中
clear()删除 arraylist 中的所有元素
clone()复制一份 arraylist
contains()判断元素是否在 arraylist
get()通过索引值获取 arraylist 中的元素
indexOf()返回 arraylist 中元素的索引值
removeAll()删除存在于指定集合中的 arraylist 里的所有元素
remove()删除 arraylist 里的单个元素
size()返回 arraylist 里元素数量
isEmpty()判断 arraylist 是否为空
subList()截取部分 arraylist 的元素
set()替换 arraylist 中指定索引的元素
sort()对 arraylist 元素进行排序
toArray()将 arraylist 转换为数组
toString()将 arraylist 转换为字符串
ensureCapacity()设置指定容量大小的 arraylist
lastIndexOf()返回指定元素在 arraylist 中最后一次出现的位置
retainAll()保留 arraylist 中在指定集合中也存在的那些元素
containsAll()查看 arraylist 是否包含指定集合中的所有元素
trimToSize()将 arraylist 中的容量调整为数组中的元素个数
removeRange()删除 arraylist 中指定索引之间存在的元素
replaceAll()将给定的操作内容替换掉数组中每一个元素
removeIf()删除所有满足特定条件的 arraylist 元素
forEach()遍历 arraylist 中每一个元素并执行特定操作

案例一、遍历删除元素

 要求:某个班级的考试在系统上进行 成绩大致为 98、75、64、87、76、54、100

            需要把成绩低于80分的数据去掉

思路:1、定义Arraylist集合存储学生成绩

           2、遍历集合每个元素 低于80则去掉

   public static void main(String[] args) {
        //建立一个Arraylist集合 用于存储数据
        ArrayList<Integer> dates = new ArrayList();

        //添加数据
        dates.add(98);
        dates.add(75);
        dates.add(64);
        dates.add(87);
        dates.add(76);
        dates.add(54);
        dates.add(100);
        //打印集合
        System.out.println(dates);

        //循环将低于80的数据去掉
        for (int i = 0; i <dates.size(); i++) {
            int da = dates.get(i);
            if (da < 80){
                dates.remove(i);

                i--; //删除成功之后往后退一个位置 否则会跳过数据
            }


        }
        System.out.println(dates);
    }

案例二、存储自定义类对象

要求:某视频系统要存储三部电影 依次展示出来

思路:1、定义电影类 定义一个集合对象存储

           2、创建三个电影对象 封装相关数据  将对象存入集合

           3、遍历集合对象 输出相关信息

class aww{
    private String name;
    private  double data;
    private String actor;

    //构造器


    public aww(String name, double data, String actor) {
        //定义电影类
        this.name = name;
        this.data = data;
        this.actor = actor;

    }

    public aww() {
    }

    //getter and setter
    public String getName() {
        return name;
    }

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

    public double getData() {
        return data;
    }

    public void setData(double data) {
        this.data = data;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}
public class zy1 {
    public static void main(String[] args) {
        //定义电影类
        aww m1 = new aww("影片1",8.5,"001");
        aww m2 = new aww("影片2",8.4,"002");
        aww m3 = new aww("影片3",8.7,"003");

        //创建电影类的Arraylist集合 存储三部电影对象
        ArrayList<aww> moves = new ArrayList<>();
        moves.add(m1);
        moves.add(m2);
        moves.add(m3);

        //遍历电影类集合中的每个电影对象 输出视频信息
        for (int i = 0; i < moves.size() ; i++) {
            //i = 0 1 2
            aww m = moves.get(i);
            System.out.println("视频名称:"+m.getName());
            System.out.println("视频评分:"+m.getData());
            System.out.println("视频源:"+m.getActor());
            System.out.println("-------------------------------------------");
        }


    }
}


执行结果:

视频名称:影片1
视频评分:8.5
视频源:001
-------------------------------------------
视频名称:影片2
视频评分:8.4
视频源:002
-------------------------------------------
视频名称:影片3
视频评分:8.7
视频源:003
-------------------------------------------

案例三、元素搜索

存储如下信息并展示 可以按照编号搜索到该信息

编号昵称年龄就职
00001老八18管理部
00002小帅21办公部
00003阿狗20财务部
00004大米19经理部

思路:1、定义ArrayList集合存储如上信息 遍历展示出来

           2、提供一个方法 接收ArrayList集合 和要搜索编号 返回编号所有信息

           3、使用死循环 可以让用户可以不停搜索

//定义数据对象
class aww {
    private String num;
    private String name;
    private int age;
    private String AD;
    //构造器
    aww(String num, String name, int age, String ad) {
        this.num = num;
        this.name = name;
        this.age = age;
        AD = ad;
    }

    public aww(int i, String 老八, int age, String 管理部) {
    }
    //getter and setter

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    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 getAD() {
        return AD;
    }

    public void setAD(String AD) {
        this.AD = AD;
    }
}
public class zy1 {
    public static void main(String[] args) {
        //创建存储数据对象 创建信息
        ArrayList<aww> datass = new ArrayList<aww>();

        datass.add(new aww("00001", "老八", 18, "管理部"));
        datass.add(new aww("00002", "小帅", 21, "办公部"));
        datass.add(new aww("00003", "阿狗", 20, "财务部"));
        datass.add(new aww("00004", "大米", 19, "经理部"));

        //遍历信息输出展示
        for (aww s : datass) {
            System.out.println(s.getNum() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAD());
        }
            //设置扫描器输入
            Scanner sc = new Scanner(System.in);
            while (true) {
                System.out.println("请输入编号 查询信息:");
                String num = sc.next();
                //调用方法查询
                aww b = getdata(datass, num);
                //判断b中是否存在学生对象地址
                if (b == null) {
                    System.out.println("空!");
                } else {
                    System.out.println("查询出的信息为:");
                    System.out.println(b.getNum() + "\t" + b.getName() + "\t" + b.getAge() + "\t" + b.getAD());
                }
            }
        }

    //定义方法 按照编号搜索功能

    /**
     * 根据编号查询信息并返回
     *
     * @param das 存储全部信息集合
     * @param unm 搜索编号
     * @return
     */
    private static aww getdata(ArrayList<aww> das, String unm) {

        //遍历全部学生对象
        for (aww u : das) {
            //查询当前遍历对象的编号 是否是需要找到的编号
            if (u.getNum().equals(unm)) {
                return u;
            }
        }
        //没有对应 对象
        return null;
    }


}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

open_test01

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

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

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

打赏作者

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

抵扣说明:

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

余额充值