目录
一.数组(Array)
数组是一种固定大小的数据结构,用于存储相同类型的数据
1.一维数组
声明数组:
int arr[] = {1,2,3,4,5} //静态初始化一个数组
int arr[] = new int[5] //动态声明了一个整形的数组,并分配了五个元素的空间,默认值为0
访问其中的某个元素:
arr[index]; //index为下标(索引)
arr[1];
2.多维数组
二维数组:
声明二维数组:
//声明并静态初始化一个3*3的二位数组
int[][] arr = {
{1,2,3},
{4,5,6},
{7,8,9}
}
int[][] arr = new int[3][3]; //声明并动态创建一个3*3的二维数组并分配空间,默认值都为0
只指定第一维大小:
int[][] arr = new int[3][]; // 第一维大小为3,在后续操作中指定其余大小
arr[0] = new int[3]; // 为第一行分配3个元素的空间
arr[1] = new int[2]; // 为第二行分配2个元素的空间
arr[2] = new int[1]; // 为第三行分配1个元素的空间
访问其中的元素:
int i = arr[1][1]; //访问第二行,第二列的元素
// (0,0)|(0,1)|(0,2)
// -------------------------
// (1,0)|(1,1)|(1,2)
// -------------------------
// (2,0)|(2,1)|(2,2)
二.集合(Collection)
集合包含了一系列用于存储和操作数据结构的接口和类
1.List
特点:
- 有序性:元素是有序的,按照插入的顺序排列。
- 可重复性
- 访问方式:可以通过索引访问元素
- 动态大小:可以在运行时增大或减小
主要方法:
创建一个ArrayList实例:
List<String> list = new ArrayList<>();
添加元素:
list.add("a");
list.add("b");
list.add("c");
访问其中的某个元素:
list.get(index); //index为下标(索引)
System.out.println(list.get(1)); //b
修改:
list.set(index,element); //index为下标,element为元素
list.set(2,"two");
遍历:
for (String list : lists) {
System.out.println(list);
}
2.ArrayList
ArrayList是一个基于动态数组的数据结构,能够自动调整大小来存储集合中的元素。
特点:
- 动态大小:可以根据需要自动调整大小
- 随机访问:ArrayList内部使用数组存储元素,可以通过索引快速访问任何元素
- 允许空值和重复元素:可以包含null
- 线程不安全
主要方法:
创建ArrayList实例:
ArrayList<String> arrLists = new ArrayList<>();
添加元素:
arrLists.add(E e); //E为数据类型 e为对应类型的元素
arrLists.add("a");
arrLists.add("b");
arrLists.add("c");
该元素会进行下标检查,确保有足够的容量之后,在末尾进行添加
arrLists.add(index,element); //index为下标,element为元素
arrLists.add(4,"e");
访问其中的某个元素:
arrLists.get(index) //index为下标
System.out.println(arrLists.get(1)); //输出1
修改:
arrLists.set(index,element); arr.set(下标,元素);
arrLists.set(2,"222");
遍历:
for (String arrList: arrLists) {
System.out.println(arrList);
}
List与ArrayList的区别:
1.List是一个接口,它定义了集合操作的行为,但具体由它的实现类实现。ArrayList是List接口的一个实现类,使用数组存放元素
2.List主要用途在于存储和操作一组有序的元素。ArrayList支持快速的随机访问,但是插入与删除较慢
数组与集合的区别:
1.数组长度固定,集合长度可变
2.数组由于长度固定,访问速度快,集合提供了更灵活的操作方式