Java中ArrayList的使用详细介绍

目录
  • 1.ArrayList类
    • 1.1ArrayList类概述
    • 1.2ArrayList类常用方法
    • 1.2.1构造方法
    • 1.2.2成员方法
    • 1.2.3示例代码
    • 1.3ArrayList存储字符串并遍历
    • 1.3.1案例需求
    • 1.3.2代码实现
    • 1.4ArrayList存储学生对象并遍历
    • 1.4.1案例需求
    • 1.4.2代码实现
    • 1.5ArrayList存储学生对象并遍历升级版
    • 1.5.1案例需求
    • 1.5.2代码实现
  • 总结

1.ArrayList类

1.1ArrayList类概述

在java中,我们会经常使用集合,集合是我们Java SE中最为重要的一个模块,当我们在创建一个List集合的时候,往往就会使用​​​​new ArrayList()​​​;因此,这个是特别重要的,本文给大家详细讲述该相关的知识点,并且会通过大量的案例加以说明。

  • 什么是集合

提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

  • ArrayList集合的特点

底层是数组实现的,长度可以变化

  • 泛型的使用

用于约束集合中存储元素的数据类型

1.2ArrayList类常用方法

我们可以通过​​上篇文章​​学习的API去查看ArryList的相关用法以及解释,刚好的一个练习使用API的机会。

1.2.1构造方法


方法名


说明


public ArrayList()


创建一个空的集合对象

1.2.2成员方法


方法名


说明


public boolean remove(Object o)


删除指定的元素,返回删除是否成功


public E remove(int index)


删除指定索引处的元素,返回被删除的元素


public E set(int index,E element)


修改指定索引处的元素,返回被修改的元素


public E get(int index)


返回指定索引处的元素


public int size()


返回集合中的元素的个数


public boolean add(E e)


将指定的元素追加到此集合的末尾


public void add(int index,E element)


在此集合中的指定位置插入指定的元素

1.2.3示例代码

public class ArrayListDemo02 {
public static void main(String[] args) {
//创建集合
ArrayList<String> array = new ArrayList<String>();

//添加元素
array.add("hello");
array.add("51CTO");
array.add("一计之长");

//public boolean remove(Object o):删除指定的元素,返回删除是否成功
// System.out.println(array.remove("world"));
// System.out.println(array.remove("javaee"));

//public E remove(int index):删除指定索引处的元素,返回被删除的元素
// System.out.println(array.remove(1));

//IndexOutOfBoundsException
// System.out.println(array.remove(3));

//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
// System.out.println(array.set(1,"javaee"));

//IndexOutOfBoundsException
// System.out.println(array.set(3,"javaee"));

//public E get(int index):返回指定索引处的元素
// System.out.println(array.get(0));
// System.out.println(array.get(1));
// System.out.println(array.get(2));
//System.out.println(array.get(3));

//public int size():返回集合中的元素的个数
System.out.println(array.size());

//输出集合
System.out.println("array:" + array);
}
}

​​​那些注掉的需要大家自行测试​​​,给大家留了一个实践的小机会,现在放开的执行结果如下:

1.3ArrayList存储字符串并遍历

1.3.1案例需求

创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合。

根据该需求,我们给出如下的解题思路:
1:创建集合对象
2:往集合中添加字符串对象
3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过​​​get(int index)​​​方法实现
4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
5:遍历集合的通用格式

1.3.2代码实现

根据该需求和思路,我们给出以下的实现代码:

public class ArrayListTest01 {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> array = new ArrayList<String>();

//往集合中添加字符串对象
array.add("一计之长");
array.add("左冷禅");
array.add("风清扬");

//遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
// System.out.println(array.size());

//遍历集合的通用格式
for(int i=0; i<array.size(); i++) {
String s = array.get(i);
System.out.println(s);
}
}
}

根据该需求我们代码的运行结果如下:

1.4ArrayList存储学生对象并遍历

1.4.1案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。

具体我们通过该需求给出相应的实现思路:

1:定义学生类
2:创建集合对象
3:创建学生对象
4:添加学生对象到集合中
5:遍历集合,采用通用遍历格式实现

1.4.2代码实现

根据该需求和思路,我们给出以下的实现代码,首先我们给出Student相应的代码,具体如下:

/*
学生类
*/
public class Student {
private String name;
private int age;

public Student() {}

public Student(String name,int age) {
this.name = name;
this.age = age;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setAge(int age) {
this.age = age;
}

public int getAge() {
return age;
}
}

接着给出该需求相应的实现代码:

public class ArrayListTest02 {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<>();

//创建学生对象
Student s1 = new Student("一计之长", 5);
Student s2 = new Student("51CTO", 12);
Student s3 = new Student("stefan", 26);

//添加学生对象到集合中
array.add(s1);
array.add(s2);
array.add(s3);

//遍历集合,采用通用遍历格式实现
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
}

根据该需求我们代码的运行结果如下:

1.5ArrayList存储学生对象并遍历升级版

1.5.1案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合 学生的姓名和年龄来自于键盘录入。

根据该需求,我们给出以下的思路:
1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为​​​String​​​类型
2:创建集合对象
3:键盘录入学生对象所需要的数据
4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
5:往集合中添加学生对象
6:遍历集合,采用通用遍历格式实现

1.5.2代码实现

根据该需求以及思路,我们给出相应的代码实现:

public class ArrayListTest {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();

//为了提高代码的复用性,我们用方法来改进程序
addStudent(array);
addStudent(array);
addStudent(array);

//遍历集合,采用通用遍历格式实现
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}

/*
两个明确:
返回值类型:void
参数:ArrayList<Student> array
*/
public static void addStudent(ArrayList<Student> array) {
//键盘录入学生对象所需要的数据
Scanner sc = new Scanner(System.in);

System.out.println("请输入学生姓名:");
String name = sc.nextLine();

System.out.println("请输入学生年龄:");
String age = sc.nextLine();

//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student s = new Student();
s.setName(name);
s.setAge(age);

//往集合中添加学生对象
array.add(s);
}
}

我们将该代码执行,执行的结果如下:

总结

我们需要对其多加练习,只要好好的练习,才会真正的掌握相关的应用,并且利用空余时间多读别人写的代码以及源码才可以更好的应用自如。

到此这篇关于Java中ArrayList的使用详细介绍的文章就介绍到这了,更多相关Java中的ArrayList内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java新手教程之ArrayList的基本使用

    目录 1.简介 2. 方法解释 (1)contains(Object o) (2)lastIndexOf(Object o) (3) toArray() (4)toArray(T[] a) (5)remove(Object o) (6)removeAll(Collection<?> c) (7)retainAll(Collection<?> c) (8)indexOf(Object o) 总结 1.简介 ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,

  • Java中为何要使用ArrayList

    前言 当我们用于获取一组数据的时候,我们总是通过下面的格式定义变量. private List<Tag> tags = new ArrayList<>(); 我们熟悉的数组去哪了? 回顾数组 我们学习c语言,c++,会学到数组是存储同类型的一组数据.后来学习指针,知道了两种结构,链式结构与顺序结构.再后来学习数据结构.知道了两种结构的优缺点. 链式结构方便删除,添加. 顺序结构方便查找. 但是我们在实际使用中逐渐感受到数组在使用上的缺点.不仅仅是在定义时就要规定数组大小. 我们通过

  • JAVA LinkedList和ArrayList的使用及性能分析

    第1部分 List概括List的框架图List 是一个接口,它继承于Collection的接口.它代表着有序的队列.AbstractList 是一个抽象类,它继承于AbstractCollection.AbstractList实现List接口中除size().get(int location)之外的函数.AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了"链表中,根据index索引值操作链表的全部函数

  • Java中ArrayList与顺序表的概念与使用实例

    目录 前言 泛型(Generic) 泛型的引入 泛型的基本概念 包装类(Wrapper Class) 包装类的引入 基本数据类型与包装类的对应关系 ArrayList与顺序表 ArrayList简介 ArrayList使用 ArrayList的构造 ArrayList常见方法 ArrayList的遍历 总结 前言 通过前面的博客我们已经大致了解了关于Java的基本知识,而下面的几篇博客我们着重开始对于数据结构的知识进行学习,这篇博客我们就了解关于顺序表和ArrayList的相关知识,从名字上我们

  • java使用listIterator逆序arraylist示例分享

    思路分析:要逆序遍历某个列表,首先要获得一个ListIterator对象,利用for()循环,以ListIterator类的hasNext()方法作为判断条件,通过循环执行ListIterator类的next()方法将游标定位到列表结尾,然后在另一个for循环中,以ListIterator类的hasPrevious()方法作为判断条件,通过ListIterator类的previous()方法逆序输出列表中的元素. 代码如下: 复制代码 代码如下: import java.util.ArrayLi

  • Java中ArrayList类的使用方法

    Java中ArrayList类的用法 1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..

  • Java中ArrayList的使用方法简单介绍

    ArrayList没有封装好的去重方法,比如对于一个[2, 5, 2, 3, 2, 4]的ArrayList,我要去除其中的重复的元素, 我也不想把语句也这么长,也不想用for循环的方法去重,那么可以先考虑把ArrayList转化为一个临时的HashSet,再把这个临时的HashSet转化回ArrayList,因为HashSet里面的元素是不可重复的嘛!至于什么是ArrayList与HashSet,在<详解java中的Collections类>已经说得很清楚了,这里不再赘述.  你可以这样写:

  • Java8 ArrayList之forEach的使用

    目录 Java8 ArrayList之forEach使用 一.用法 二.效率 ArrayList在foreach中remove的问题分析 iterator itr.hasNext 和 itr.next 实现 倒数第二个元素的特殊 如何避坑 方法一,还是fori,位置前挪了减回去就行了, remove后i--: 方法二,不用ArrayList的remove方法,用Itr自己定义的remove方法,代码如下: Java8 ArrayList之forEach使用 之前使用Java8.顺便整理自己学到的

  • Java中ArrayList的使用详细介绍

    目录 1.ArrayList类 1.1ArrayList类概述 1.2ArrayList类常用方法 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 1.3ArrayList存储字符串并遍历 1.3.1案例需求 1.3.2代码实现 1.4ArrayList存储学生对象并遍历 1.4.1案例需求 1.4.2代码实现 1.5ArrayList存储学生对象并遍历升级版 1.5.1案例需求 1.5.2代码实现 总结 1.ArrayList类 1.1ArrayList类概述 在java中,我们会

  • java 中继承和多态详细介绍

    继承和多态 一.this super关键字 1.this: 可以在构造器中的第一代码中调用本类中的其他构造器.this(参数) 非类方法参数中隐式传入的参数,表示调用当前方法的对象. 2.super: 可以在构造器的第一句代码调用父类的构造器.super(参数). 非静态方法中表示继承的父类对象,可以调用父类方法和属性. 二.方法的覆写: 子类重新实现了和父类一样的方法.访问修饰和异常都必须至少和父类的相同或者更大的范围. 三.方法的重载: 相同的方法的名字不同的参数列表. 四.多态: java

  • java 中函数的参数传递详细介绍

    java中函数的参数传递 总结: 1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的对象.   2.当将基本类型或基本类型的包装集作为参数传递时,传递的是值.也就是说函数内对参数所做的修改不会影响原来的变量.   3.数组(数组引用))作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的数组.   4.String类型(引用)作为参数传递时传递的是引用,只是对String做出任何修改时有一个新的String

  • Java中的阻塞队列详细介绍

    Java中的阻塞队列 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是: 在队列为空时,获取元素的线程会等待队列变为非空. 当队列满时,存储元素的线程会等待队列可用. 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素. 2.Java里的阻塞队列 JDK中提供了七个阻塞队列: ArrayBlockingQueue :一个由数组结

  • java中的枚举类型详细介绍

    枚举中有values方法用于按照枚举定义的顺序生成一个数组,可以用来历遍.我们自定义的枚举类都是继承自java.lang.Enum,拥有一下实例中的功能: 复制代码 代码如下: //: enumerated/EnumClass.java // Capabilities of the Enum class import static net.mindview.util.Print.*; enum Shrubbery { GROUND, CRAWLING, HANGING } public clas

  • Java中的Object类详细介绍

    理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Object类,因此省略了extends Object关键字. 该类中主要有以下方法: toString(),getClass(),equals(),clone(),finalize(), 其中toString(),getClass(),equals是其中最重要的方法. 注意: Object类中的getClass(),notify(),notifyAll(),wait()等方法被定义为f

  • Java中四种引用类型详细介绍

    Java 四种引用类型 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用. ⑴强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,

  • java中多线程的超详细介绍

    1.线程概述 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程.当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程. 2.线程与进程 进程概述: 几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程( Process).当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位. 进程特征: 1.独立性:进程是系统中独立存在的实体,

  • Java中的final关键字详细介绍

    •final变量如果在变量前加final关键字,则这个变量一旦被初始化,便不可再改变. 如果一个final变量是类成员变量,则必须被初始化,且只能被初始化一次. 方法中的参数也可以是final变量.这在我们需要传递引用型的变量时非常有用,因为有时候我们并不希望调用函数修改该变量而影响到原函数中对象的值.因此将引用型变量设为final类型可以有效方式变量被调用参数修改.此时在调用方法中只可以使用该变量,但不能对其做任何修改. 复制代码 代码如下: void test(final int a){ 

  • Java中ArrayList类详细介绍

    Java中ArrayList类详细介绍 ArrayList是一个可变长度数组,它实现了List接口,因此它也可以包含重复元素和Null元素,也可以任意的访问和修改元素,随着向 ArrayList 中不断添加元素,其容量也自动增长.不过ArrayList是非同步(同步的意思是如果多个线程同时访问一个实例,任何一个线程对实例做了修改之后,其他线程所访问到的实例应该是修改过的最新的实例)的, 我们经常使用List list = Collections.synchronizedList(new Arra

随机推荐