【零基础学Java】—ArrayList集合概述和基本使用(十四)

简介: 【零基础学Java】—ArrayList集合概述和基本使用(十四)

一、什么是ArrayList类以及注意事项

  • java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此类提供一些方法来操作内部的元素,ArrayList中可以不断添加元素,其大小也自动增长。
  • 数组的长度不可以发生改变,但是ArrayList集合的长度是任意可以改变的
  • 对于ArrayList来说,有一个尖括号<E>代表泛型 泛型:也就是装在集合当中的所有元素,全部都是统一的什么类型
  • 注意:泛型只能是引用类型,不能是基本类型
  • 注意事项: 对于ArrayList集合来说,直接打印得到不是地址值,而是内容,如果内容为空,得到的是中括号:[]
import java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 11:20
 */
/*
数组的长度不可以发生改变,但是ArrayList集合的长度是任意可以改变的
对于ArrayList来说,有一个尖括号<E>代表泛型
泛型:也就是装在集合当中的所有元素,全部都是统一的什么类型
注意:泛型只能是引用类型,不能是基本类型
注意事项:
对于ArrayList集合来说,直接打印得到不是地址值,而是内容
如果内容为空,得到的是中括号:[]
 */
public class demo06 {
    public static void main(String[] args) {
        //创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据
       //从JDK1.7+起,右侧的尖括号内可以不写内容,但是<>本身还是要写上的
        ArrayList<String> list=new ArrayList<>();
        System.out.println(list);//[]
        //向集合当中添加数据
        list.add("张三");
        System.out.println(list);//[张三]
        list.add("彭于晏");
        list.add("王嘉尔");
        list.add("金瀚");
        System.out.println(list);//[张三, 彭于晏, 王嘉尔, 金瀚]
    }
}

二、 ArrayList的常用方法

  • public boolean add(E e):向集合中添加元素,参数的类型和泛型一致
  • public E get(int index):从集合中获取元素,参数还是索引编号,返回值就是对应位置的元素
  • public E remove(int index):从集合当中删除元素,参数是索引的编号,返回值就是被删除掉的元素
  • public int size():获取集合的尺寸长度,返回值是包含元素的个数
  • 备注:对于 ArrayList集合来说,add添加动作一定是成功的,所以返回值可以用也可以不用
  • 但是对于其他集合(今后学习)来说,add添加的动作不一定成功
mport java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 11:46
 */
/*
public boolean add(E e):向集合中添加元素,参数的类型和泛型一致
public E get(int index):从集合中获取元素,参数还是索引编号,返回值就是对应位置的元素
public E remove(int index):从集合当中删除元素,参数是索引的编号,返回值就是被删除掉的元素
public int size():获取集合的尺寸长度,返回值是包含元素的个数
备注:对于  ArrayList集合来说,add添加动作一定是成功的,所以返回值可以用也可以不用
但是对于其他集合(今后学习)来说,add添加的动作不一定成功
 */
public class demo07 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        System.out.println(list);//[]
        //向集合中添加元素
      boolean success=list.add("王嘉尔");
        System.out.println(list);//[王嘉尔]
        System.out.println("添加的动作是否成功:"+success);//true
        list.add("金瀚");
        list.add("赵今麦");
        list.add("刘涵涵");
        // 从集合中获取元素:get 索引值从0开始
        String name= list.get(2);
        System.out.println("第二号元素的位置:"+name);
        //从集合中删除元素remove索引值从0开始
        String whoRemove=list.remove(2);
        System.out.println("被删除的人是:"+whoRemove);
        System.out.println(list);
        //获取集合的长度尺寸,也就是其中元素的个数
        int size =list.size();
        System.out.println("集合的长度是:"+size);
    }
}

三、遍历集合

import java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 13:26
 */
public class demo08 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        //遍历集合
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
    }
}

四、ArrayList集合存储基本数据

如果希望向集合ArrayList当中存储基本类型的数据,必须使用基本类型的包装类

import java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 13:32
 */
public class demo09 {
    public static void main(String[] args) {
        ArrayList<String> listA=new ArrayList<>();
        ArrayList<Integer> listB=new ArrayList<>();
        listB.add(32);
        listB.add(100);
        System.out.println(listB);//[32, 100]
        int num=listB.get(1);
        System.out.println("第一号元素是:"+num);
    }
}

五、练习题

1️⃣生成6个1-33之间的随机整数,添加到集合,并遍历集合

import java.util.ArrayList;
import java.util.Random;
/**
 * @author :CaiCai
 * @date : 2022/4/7 13:43
 */
public class demo10 {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        Random r=new Random();
        for (int i = 0; i <6; i++) {
        int num=r.nextInt(33)+1;
        list.add(num);
        }
        //遍历集合
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
    }
}

2️⃣题目:自定义4个学生对象,添加到集合并且遍历

/**
 * @author :CaiCai
 * @date : 2022/4/7 13:52
 */
public class Student {
    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;
    }
}
import java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 13:54
 */
public class demo12 {
    public static void main(String[] args) {
        ArrayList<Student> list=new ArrayList<>();
        Student one=new Student("张三",20);
        Student two=new Student("李四",26);
        Student three=new Student("王五",23);
        Student four=new Student("李柳",24);
        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
          Student stu= list.get(i);
            System.out.println("姓名"+stu.getName()+"年龄"+stu.getAge());
        }
    }
}

3️⃣打印集合

import java.util.ArrayList;
/**
 * @author :CaiCai
 * @date : 2022/4/7 14:08
 */
public class demo13 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("张三丰");
        list.add("宋远桥");
        list.add("张无忌");
        list.add("张翠山");
        System.out.println(list);//[张三丰, 宋远桥, 张无忌, 张翠山]
        printArrayList(list);
    }
    /*
    定义方法的三要素
    返回值类型:只是进行打印,没有运算,所以不需要返回值
    方法名称:printArrayList
    参数列表:ArrayList
     */
    public static void printArrayList(ArrayList<String> list){
          //{10@20@30}
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
            String name=list.get(i);
            if(i==list.size()-1){
                System.out.println(name+"}");
            }
            else{
                System.out.print(name+"@");
            }
        }
    }
}


相关文章
|
4天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
23 3
|
21天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
37 5
|
2月前
|
Java 索引 容器
Java ArrayList扩容的原理
Java 的 `ArrayList` 是基于数组实现的动态集合。初始时,`ArrayList` 底层创建一个空数组 `elementData`,并设置 `size` 为 0。当首次添加元素时,会调用 `grow` 方法将数组扩容至默认容量 10。之后每次添加元素时,如果当前数组已满,则会再次调用 `grow` 方法进行扩容。扩容规则为:首次扩容至 10,后续扩容至原数组长度的 1.5 倍或根据实际需求扩容。例如,当需要一次性添加 100 个元素时,会直接扩容至 110 而不是 15。
Java ArrayList扩容的原理
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
43 4
|
2月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
37 2
|
2月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
2月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
2月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
2月前
|
Java 开发者
|
2月前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
36 0