学习笔记 | ArrayList的基本使用

1-1 集合与数组的对比(为什么要有集合)

 分为俩点

1. 长度:数组的长度是固定的,集合的长度是可变的。

2. 存储类型:

        数组:可以存储基本数据类型,引用数据类型。

        集合:只能存储引用数据类型。

小tips:

        基本数据类型在集合中存储要使用包装类

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

byte => Byte      short => Short

int => Integer     long => Long

float => Float     double => Double     

boolean => Boolean 

char => Character      

泛型 

new ArrayList<泛型>(); 

 泛型就是限定集合中存储数据的类型       

1-2 ArrayList成员方法 

集合的常用的成员方法主要就是增删改查

 E为泛型的类型

boolean add(E e);   添加元素,返回true或false

boolean remove(E e);  删除元素

E remove(int index); 删除指定索引的元素,返回删除的元素

E set(int index,E e); 修改指定索引的元素,返回修改前的元素

E get(int index); 获取指定索引的元素

int size(); 返回集合的长度,也就是集合中元素的个数

1-3 例题 

1.现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。

 //现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("aaa");
        list.add("aaa");
        list.add("ccc");
        list.add("bbb");

        StringJoiner sj = new StringJoiner(", ", "[", "]");
        for (int i = 0; i < list.size(); i++) {
            sj.add(list.get(i));
        }
        System.out.println(sj);
    }

运行结果:

2. 请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息

domain:


public class Teacher {

    private String name;
    private String course;


    public Teacher() {
    }

    public Teacher(String name, String course) {
        this.name = name;
        this.course = course;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return course
     */
    public String getCourse() {
        return course;
    }

    /**
     * 设置
     * @param course
     */
    public void setCourse(String course) {
        this.course = course;
    }

    public String toString() {
        return "Teacher{name = " + name + ", course = " + course + "}";
    }
}

main:

//请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下
    //姓名:赵老师, 专业:javase
    //姓名:钱老师, 专业:javaee
    //姓名:孙老师, 专业:php
    //姓名:李老师, 专业:python

    public static void main(String[] args) {
        ArrayList<Teacher> list = new ArrayList<>();
        list.add(new Teacher("xiaowang", "java"));
        list.add(new Teacher("xiaoming", "python"));
        list.add(new Teacher("xiaosu", "c++"));
        for (int i = 0; i < list.size(); i++) {
            System.out.println("姓名:" + list.get(i).getName() + "\t" + "课程:" + list.get(i).getCourse());
        }

    }

 运行结果:

 3.

有如下员工信息:
姓名:张三,工资:3000
姓名:李四,工资:3500
姓名:王五,工资:4000
姓名:赵六,工资:4500
姓名:田七,工资:5000
先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:
        1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”
        2、判断是否有姓名为“赵六”的员工,如果有,将其删除
        3、给姓名为“田七”的员工,涨500工资

domain:


public class Worker {

    private String name;
    private int salary;


    public Worker() {
    }

    public Worker(String name, int salary) {
        this.name = name;
        this.salary = salary;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return salary
     */
    public int getSalary() {
        return salary;
    }

    /**
     * 设置
     * @param salary
     */
    public void setSalary(int salary) {
        this.salary = salary;
    }

    public String toString() {
        return "Worker{name = " + name + ", salary = " + salary + "}";
    }
}

main:

  public static void main(String[] args) {
        ArrayList<Worker> list = new ArrayList<>();
        list.add(new Worker("张三",3000));
        list.add(new Worker("李四",3500));
        list.add(new Worker("王五",4000));
        list.add(new Worker("赵六",4500));
        list.add(new Worker("田七",5000));

        //1.
        if(contain(list,"王五")) {
            int index = getIndex(list, "王五");
            Worker worker = list.get(index);
            worker.setName("王小五");
            System.out.println(worker.toString());
        }

        //2.
        if(contain(list,"赵六")) {
            int index = getIndex(list, "赵六");
            Worker worker = list.remove(index);
            System.out.println(worker.toString());
        }

        //3.
        if(contain(list,"田七")) {
            int index = getIndex(list, "田七");
            Worker worker = list.remove(index);
            int salary = worker.getSalary() + 500;
            worker.setSalary(salary);
            System.out.println(worker.toString());
        }
    }

    //是否存在
    public static boolean contain(ArrayList<Worker> list,String name) {
        return getIndex(list,name) > 0;
    }

    //获取元素的索引 存在返回索引,不存在返回-1
    public static  int getIndex(ArrayList<Worker> list,String name) {
        for (int i = 0; i < list.size(); i++) {
            Worker worker = list.get(i);
            if(worker.getName().equals(name)){
                return i;
            }
        }
        return -1;
    }

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

isuweijie

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

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

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

打赏作者

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

抵扣说明:

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

余额充值