数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。
为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
1创建集合
导包:import java.util.ArrayList;
创建对象:ArrayList<要存储元素的数据类型> 变量名 = new ArrayList<要存储元素的数据类型>();
与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型,
集合中存储的元素,只能为<>括号中指定的数据类型元素
<要存储元素的数据类型> 中的数据类型必须是引用数据类型,不能是基本数据类型
2:8种基本数据类型所对应的引用数据类型表示形式
基本数据类型 | 对应的引用数据类型表示形式 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
他们使用的方式是一样的,只是右面的这些可以调用方法,属性,
数据范围,除了原有的那些,还可以为null。
(这也是普通变量和对象的区别,变量不能调用方法和属性,对象可以)
3集合中常用方法
方法声明 | 功能描述 |
boolean add(Object obj) | 将指定元素obj追加到集合的末尾 |
Object get(int index) | 返回集合中指定位置上的元素 |
int size() | 返回集合中的元素个数 |
boolean add(int index, Object obj) | 将指定元素obj插入到集合中指定的位置 |
Object remove(int index) | 从集合中删除指定index处的元素,返回该元素 |
void() | 清空集合中所有元素 |
Object set(int index, Object obj) | 用指定元素obj替代集合中指定位置上的元素 |
说明:
1)所有类都是继承Object(以后会再讲)
2)add(obj)传的就是一个对象,返回值是布尔值,true表示添加成功,但这个值没什么实际意义
3)get(index)传一个下标,集合里叫索引。与数组的arr[下标]相同的含义。这里注意,如果超出长度,也会报异常,叫索引越界异常
4)size()返回集合中的元素个数,(相当于数组的length属性),这样就知道了长度,就可以遍历了
5)add(index, obj)这就是方法重载
6)remove(index)传入下标,返回删的值
7)clear()清空
8)set(index, obj)相当于修改, 传入(下标,元素),返回值是被替代的那个元素
4集合的遍历和方法应用
//集合的相关操作
import java.util.ArrayList;
class Demo02
{
public static void main(String[] args)
{
ArrayList<Integer> list=new ArrayList<Integer>();
boolean flag=list.add(1);
System.out.println(flag); //true,表示存入成功,这个值没什么实际意义
//添加元素
list.add(2);
list.add(5);
//获取元素
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
//集合的长度
System.out.println("集合的长度是"+list.size());
System.out.println("----------");
//在集合的指定位置插入元素
list.add(0,8000);
//删除集合中指定的元素
int ele=list.remove(1);
System.out.println("被删除的元素为"+ele);
//替换
int before=list.set(0,5000);
System.out.println("被替换的元素为"+before);
System.out.println("----------");
//集合的遍历
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
//清空集合
list.clear();
}
}