Java 入门 学习笔记(2):ArrayList

akira 发布于 8 小时前 3 次阅读 1418 字 预计阅读时间: 6 分钟 最后更新于 8 小时前


数组 VS 集合

数组很好,但缺点显而易见:它的长度不可变。而集合的长度可变。

集合不能直接存储基本数据类型。

泛型:用于限定集合中数据类型。

集合存储引用数据类型,但打印时不输出对象的地址值,而是输出具体值。打印展示时会使用[]将对象包裹起来。

import java.util.ArrayList;
public class arraylist {
    public static void main(String[] args) {
        // new 一个集合对象并指定泛型
        // JDK7 以后版本后部分的泛型可以省略,但< >必须保留
        ArrayList<String> list = new ArrayList();
        System.out.println(list);
        // 应当会输出 []
    }
}

ArrayList 成员方法

ArrayList 成员方法的增删改查。

boolean add(E e) //添加元素,返回值表示是否添加成功
boolean remove(E e) //删除元素,返回值表示是否添加成功
E remove(int index)  //删除集合中指定元素,返回被删除元素
E set(int index,E e) //修改指定元素,返回原来元素
E get(int index) //获取指定索引的元素
int size() //集合长度

list.add()
list.remove()
list.set(index,)
list.get(index)

其中,E 是泛型类参数,用来限制数据类型;e 则是形参,即添加的数据内容。

示例:

import java.util.ArrayList;
public class arraylist {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        // 添加一个元素
        list.add("a");
        // 删除元素并使用一个变量接收布尔值结果
        boolean result1 = list.remove("a");
        boolean result2 = list.remove("b");
        System.out.println(result1);
        System.out.println(result2);
        // 应当依次输出 true 与 false
    }
}

遍历:

        for (int i = 0; i < list.size(); i++) {
            String str = list.get(i);
            System.out.println(str);
        }

小练习

集合的遍历

定义一个集合,添加字符串,并遍历集合。 展示格式要求为 [e1, e2, e3]。

import java.util.ArrayList;

public class arraylist {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("e1");
        list.add("e2");
        list.add("e3");
        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) + ", ");
            }
        }
        System.out.println("]");
        }       
}

当然,这完全是个脱裤子放屁的方法。我们可以使用 Java 8 的 String.join 方法结合集合的 toString() 特性,效果是完全一样的:

System.out.println(list.toString());

添加用户对象并判断是否存在

需求:

  1. main 方法定义一个集合,存入一个用户对象。用户属性为:id, username, password
  2. 要求:定义一个方法,根据 id 查找用户信息。存在返回 true,反之则返回 false

我们创建一个 User 类,使用标准的 JavaBean 类格式。

我们需要两个类,一个 main,一个 User。

User 类:

public class User {
    private String id;
    private String username;
    private String password;
    
    public User(String id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }
    
    public User() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

main:

import java.util.ArrayList;

public class arraylist {
    public static void main(String[] args) {
        // 创建 User 对象并将其存入列表
        ArrayList<User> list = new ArrayList<>();
        User u1 = new User("akira", "zhangsan", "123456");
        list.add(u1);

        // 调用我们定义好的方法
        boolean flag = contains(list, "akira");
        System.out.println(flag);
    }
    
    // 遍历方法
    public static boolean contains(ArrayList<User> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return true;
            }
        }
        return false;
    }
}

补充

基本数据类型对应的包装类

由于集合不能直接存储基本数据类型,所以要转换为其对应的包装数据类型。不需要记,IDE 直接 tab 补全。

  • reward_image1
此作者没有提供个人介绍。
最后更新于 2026-03-14