ArrayList集合

本文讨论了Java中的集合和数组在长度、存储类型、成员方法上的差异,包括添加、删除元素及处理基本数据类型和自定义对象的方法。还介绍了如何使用自定义JavaBean类创建集合并进行操作,以及对象id的查找和索引获取。
摘要由CSDN通过智能技术生成

集合和数组对比

  • 长度

        数组长度固定

        集合长度可变

  • 存储类型

        数组可存基本数据以及引用数据类型

        集合只能存引用数据类型,存基本数据类型需要使用包装类

成员方法     

boolean add(E e) 添加元素,返回值表示是否添加成功

boolean remove(E e)删除指定元素,返回值表示是否删除成功

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

E set(int index,E e) 修改指定索引下的元素,返回原来的元素

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

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

 使用

//创建集合
ArrayList<String> list = new ArrayList<>(
//添加元素,无论添加什么都会成功
list.add("abc");
list.add("def");
list.add("efg");
list.add("hij"
//删除元素,当删除的元素不存在时,删除失败。
/*list.remove("abc");
//按照指定索引删除元素
String result = list.remove(0);
System.out.println(remove);//abc
//修改元素
/*String result = list.set(1, "aaa");
System.out.println(result);//def
//获取元素
/*String result = list.get(0);
System.out.println(result);//abc
//遍历:先获取长度
/*for (int i = 0; i < list.size(); i++) {//i索引 list.get(i) 获取
    System.out.print(list.get(i) + " ");//abc def efg hij
}
System.out.println();
for (String str: list) {
    System.out.print(str + " ");
}*/
System.out.println(list);

 按照"["a","b"]"格式遍历集合

//创建集合
ArrayList<String> list = new ArrayList<>()
//添加
list.add("abc");
list.add("def");
list.add("ghi");
list.add("jkl")
//遍历
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("]");

 基本数据类型包装类

        byte Byte

        short Short

        char Character

        int Integer

        long Long

        float Float

        double Double

        boolean Boolean

自建对象包装类,使用集合

 自建一个JavaBean类的Student对象

//JavaBean
//成员变量私有化
//空参构造方法
//全参构造方法
//get/set方法
private String name;
private int age
public Student() {

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

 创建集合

//创建集合
ArrayList<Student> listStu = new ArrayList<>();
//调用全参构造函数创建学生对象
Student s1 = new Student("zhangsan",18);
Student s2 = new Student("lisi",19);
Student s3 = new Student("wangwu",20);
Student s4 = new Student("zhhaoliu",21);
//把学生对象添加到list集合
listStu.add(s1);
listStu.add(s2);
listStu.add(s3);
listStu.add(s4);
//遍历
for (int i = 0; i < listStu.size(); i++) {
    Student stu = listStu.get(i);
    System.out.println(stu.getName() +"," + stu.getAge());
}
//创建集合
ArrayList<Student> listStu = new ArrayList<>();//当前长度为0
//键盘录入学生的信息并添加到集合当中,注意:当list没有数据时,循坏不执行;
Scanner sc = new Scanner(System.in);

for (int i = 0; i < 3; i++) {
    Student s = new Student();//每次都创建了一个新的对象
    System.out.println("请输入学生姓名:");
    String name = sc.next();
    System.out.println("请输入学生年龄:");
    int age = sc.nextInt();
    //把name和age赋值给学生对象
    s.setName(name);
    s.setAge(age);
    listStu.add(s);//每次添加的都是指向新的地址添加
}
for (int i = 0; i < listStu.size(); i++) {
    //获取学生对象
    Student stu = listStu.get(i);
    System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge());
}
System.out.println(listStu);//[edu.ListStudy.Student@2d38eb89, edu.ListStudy.Student@5fa7e7ff, edu.ListStudy.Student@4629104a]
//创建集合
ArrayList<Student> listStu = new ArrayList<>();//当前长度为0
//键盘录入学生的信息并添加到集合当中,注意:当list没有数据时,循坏不执行;
Scanner sc = new Scanner(System.in);
Student s = new Student();//只创建了一个对象,每次添加都是往他所在的地址添加,覆盖了前面添加的数据,所以最后都是同一个数据
for (int i = 0; i < 3; i++) {
    System.out.println("请输入学生姓名:");
    String name = sc.next();
    System.out.println("请输入学生年龄:");
    int age = sc.nextInt();
    //把name和age赋值给学生对象
    s.setName(name);
    s.setAge(age);
    listStu.add(s);
}
for (int i = 0; i < listStu.size(); i++) {
    //获取学生对象
    Student stu = listStu.get(i);//去找的对象都是同一个地址下的值,所以遍历出来的数据是一样的
    System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge());
}
System.out.println(listStu);//[edu.ListStudy.Student@2d38eb89, edu.ListStudy.Student@2d38eb89, edu.ListStudy.Student@2d38eb89]

 判断对象中的id是否存在

//创建集合
ArrayList<User> listUser = new ArrayList<>()
//创建三个用户对象
User p1 = new User(1,"zs123","123456");
User p2 = new User(2,"ls123","654321");
User p3 = new User(3,"ww123","ww1234");
//把用户对象添加到集合中
listUser.add(p1);
listUser.add(p2);
listUser.add(p3);
//调用方法查看id是否唯一
boolean flag = isExist(listUser, 10)
System.out.println(flag);
}
public static boolean isExist(ArrayList<User> listUser,int id){
    for (int i = 0; i < listUser.size(); i++) {
        if (listUser.get(i).getId() == id){
            //找到直接返回true
            return true;
        }
    }
    //循坏结束集合里所有元素都已经比较完毕,还没有一样,就返回false
    return false;
}

 获取对象中指定id的索引值

//创建集合
ArrayList<User> listUser = new ArrayList<>(
//创建三个用户对象
User p1 = new User(1,"zs123","123456");
User p2 = new User(2,"ls123","654321");
User p3 = new User(3,"ww123","ww1234");
//把用户对象添加到集合中
listUser.add(p1);
listUser.add(p2);
listUser.add(p3);
//查找索引
int index = getIndex(listUser, 2);
System.out.println(index);
}
public static boolean isExist(ArrayList<User> listUser,int id){
    return getIndex(listUser,id) >= 0;
}
public static int getIndex(ArrayList<User> listUser,int id){
    for (int i = 0; i < listUser.size(); i++) {
        User user = listUser.get(i);
        if (user.getId() == id){
            return i;
        }
    }
    return -1;
}

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值