Java基础-ArrayList集合

一、概述

ArrayList集合是程序中最常见的一种集合,属于引用类型,在ArrayList内部封装了一个长度可变的数组,当存储元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,可以看做ArrayList是一个长度可变的数组。

1、创建集合

导包:import java.util.ArrayList;
创建对象:ArrayList<要存储的数据类型>  变量名  =  new  ArrayList<要存储的数据类型>();
注意:<要存储的数据类型>中必须为引用数据类型

2、基本数据类型对应应用数据类型

基本数据类型    对应的引用数据类型

byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

3、创建方式 

存储String类型的元素:ArrayList<String>  list  =  new  ArrayList<String>();
存储int类型的元素:ArrayList<Integer>  list  =  new  ArrayList<Integer>();
创建自己定义的Student类型的数据:ArrayList<Student>  list  = new  ArrayList<Student>();
集合和数组的区别:

集合的长度是可变的,数组的长度是固定的

集合中存储的元素必须是引用类型数据

ArrayList遍历方式


ArrayList有三种遍历方式

迭代器遍历


Iterator<Integer> it = arrayList.iterator();
while(it.hasNext()){
    System.out.print(it.next() + " ");
}


索引值遍历
 

for(int i = 0; i < arrayList.size(); i++){
   System.out.print(arrayList.get(i) + " ");
}


for循环遍历

for(Integer number : arrayList){
   System.out.print(number + " ");
}


需要说明的是,遍历ArrayList时,通过索引值遍历效率最高,for循环遍历次之,迭代器遍历最低。

toArray()的使用


有时候,当我们调用ArrayList中的 toArray(),可能遇到过抛出java.lang.ClassCastException异常的情况,这是由于toArray() 返回的是 Object[] 数组,将 Object[] 转换为其它类型(如,将Object[]转换为的Integer[])则会抛出java.lang.ClassCastException异常,因为Java不支持向下转型
所以一般更常用的是使用另外一种方法进行使用:

<T> T[] toArray(T[] a)


调用toArray(T[] a)返回T[]可通以下方式进行实现:

 // toArray用法
 // 第一种方式(最常用)
 Integer[] integer = arrayList.toArray(new Integer[0]);

 // 第二种方式(容易理解)
 Integer[] integer1 = new Integer[arrayList.size()];
 arrayList.toArray(integer1);

 // 抛出异常,java不支持向下转型
 //Integer[] integer2 = new Integer[arrayList.size()];
 //integer2 = arrayList.toArray();


ArrayList用法示例
 

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListDemo {

    public static void main(String[] srgs){
         ArrayList<Integer> arrayList = new ArrayList<Integer>();

         System.out.printf("Before add:arrayList.size() = %d\n",arrayList.size());

         arrayList.add(1);
         arrayList.add(3);
         arrayList.add(5);
         arrayList.add(7);
         arrayList.add(9);
         System.out.printf("After add:arrayList.size() = %d\n",arrayList.size());

         System.out.println("Printing elements of arrayList");
         // 三种遍历方式打印元素
         // 第一种:通过迭代器遍历
         System.out.print("通过迭代器遍历:");
         Iterator<Integer> it = arrayList.iterator();
         while(it.hasNext()){
             System.out.print(it.next() + " ");
         }
         System.out.println();

         // 第二种:通过索引值遍历
         System.out.print("通过索引值遍历:");
         for(int i = 0; i < arrayList.size(); i++){
             System.out.print(arrayList.get(i) + " ");
         }
         System.out.println();

         // 第三种:for循环遍历
         System.out.print("for循环遍历:");
         for(Integer number : arrayList){
             System.out.print(number + " ");
         }

         // toArray用法
         // 第一种方式(最常用)
         Integer[] integer = arrayList.toArray(new Integer[0]);

         // 第二种方式(容易理解)
         Integer[] integer1 = new Integer[arrayList.size()];
         arrayList.toArray(integer1);

         // 抛出异常,java不支持向下转型
         //Integer[] integer2 = new Integer[arrayList.size()];
         //integer2 = arrayList.toArray();
         System.out.println();

         // 在指定位置添加元素
         arrayList.add(2,2);
         // 删除指定位置上的元素
         arrayList.remove(2);    
         // 删除指定元素
         arrayList.remove((Object)3);
         // 判断arrayList是否包含5
         System.out.println("ArrayList contains 5 is: " + arrayList.contains(5));

         // 清空ArrayList
         arrayList.clear();
         // 判断ArrayList是否为空
         System.out.println("ArrayList is empty: " + arrayList.isEmpty());
    }
}


Before add:arrayList.size() = 0
After add:arrayList.size() = 5
Printing elements of arrayList
通过迭代器遍历:1 3 5 7 9 
通过索引值遍历:1 3 5 7 9 
for循环遍历:1 3 5 7 9 
ArrayList contains 5 is: true
ArrayList is empty: true

猜你喜欢

转载自blog.csdn.net/i_silence/article/details/106526165