Java:ArrayList的基本使用(学习笔记)

 集合和数组的对比(为什么要有集合)

 分为俩点

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

2. 存储类型:

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

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

小tips:

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

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

byte => Byte      short => Short

int => Integer     long => Long

float => Float     double => Double     

boolean => Boolean 

char => Character      

泛型 

new ArrayList<泛型>(); 

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

 

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.现有如下字符串元素:["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;
    }

 


posted @   suweijie  阅读(186)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示