数据结构与算法——数组

数组(Array)


文章目录

  • 数组(Array)
  • 简介
  • 一、数组
    • 动态定义(指定数组的长度)
    • 静态定义(指定数组的元素)
  • 二、下标
  • 三、元素操作
  • 四、二维数组
    • 动态初始化
    • 静态初始化
    • 遍历二维数组
  • 五、 多维数组
  • 六、 Java 容器


简介

  • 数组是相同数据类型的元素的集合。
  • 数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
  • 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

一、数组

动态定义(指定数组的长度)

数据类型[ ] 数组名 = new 数据类型[长度];
数据类型 数组名[ ] = new 数据类型[长度];

//定义可以存3个整数的数组容器
int[] arr = new int[3];
//初始化数组,为arr添加数据
int intValue = arr [5,4,3];
//或者给一部分赋值,后面的值默认为0
//数据类型不同,默认值不同
//其他数据类型也可如此

静态定义(指定数组的元素)

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};

//定义整数1,2,3,4,5的数组储存容器。
int[] arr = new int[]{1,2,3,4,5};
//其他数据类型也可如此

省略格式(声明的同时赋值):数据类型[] 数组名 = {元素1,元素2,元素3…};

//定义整数1,2,3,4,5的数组储存容器。
int[] arr = {1,2,3,4,5};
//其他数据类型也可如此

1、如果使用静态方式创建数组,那么系统会根据元素的个数自动计算数组的长度
2、静态方式创建数组右边的中括号里面不能写长度
3、静态方式的省略格式创建数组不能先声明后赋值,只能声明的同时直接赋值


补充

1. 直接给每个元素赋值
int array[4] = {1,2,3,4};
2. 给一部分赋值,后面的全部为0
int array[4] = {1,2};
3. 由赋值参数个数决定数组的个数
int array[] = {1,2};

二、下标

在数组定义并初始化过后,他内部的元素并不是混乱的,他们内部的元素存在各自的位置,这里我们称之为下标

//我们先定义一个数组
String array[] = {"One","Two","Three","Four"};

下标与日常生活计算位置不同,他是从零开始,也就是4个元素有4个下标,分别是0123,如下:

下标位置 元素
0 One
1 Two
2 Three
3 Four
//根据下标输出
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
//输出结果为:One            
//			 Two
//           Three
//           Four

三、元素操作

针对元素的操作,我们可以用到
java.util.Arrays
API参考链接:跳转至Arrays
数组元素进行替换等操作。

@Test
void test7(){
	int [] arr = {1,2,3,4};
	System.out.println("替换数据前:arr:[ "+ arr[0] + "," + arr[1] + "," + arr[2] + "," + arr[3] + "]");
	Arrays.fill(arr,1000);
	System.out.println("替换数据后:arr:[ "+ arr[0] + "," + arr[1] + "," + arr[2] + "," + arr[3] + "]");
}

输出结果:
在这里插入图片描述


四、二维数组

二维数组初始化

动态初始化

数据类型 数组名 [ ][ ] = new 数据类型[x][y]
数据类型 [ ][ ] 数组名 = new 数据类型[x][y]
数据类型 [ ] 数组名 [ ] = new 数据类型[x][y]
可以理解为x行y列

//数据类型 数组名[][] = new 数据类型[x][y]
int arr_1[][] = new int[3][2];
//数据类型[][] 数组名 = new 数据类型[x][y]
int[][] arr_2 = new int[3][2];
//数据类型[] 数组名[] = new 数据类型[x][y]
int[] arr_3[] = new  int[3][2];

静态初始化

数据类型 [ ][ ] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};

//数据类型[][] 数组名 = {{元素1,元素2,...}, {元素1,元素2,...}, ...};
int[][] arr_4 = {{1,2,3}, {4,5}, {5,6,7,8}};

可以为空,但是没有意义,因为这样写这个数组就不能用了。再赋值的话就会报错。
设置长度时后面括号可以为空,但是没有意义,赋值的话就会报错。

遍历二维数组

    @Test
    void test8(){
        int[][] arr= new int[][]{{11, 22, 33, 44}, {1, 2, 3}};
        for(int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }

在这里插入图片描述
根据输出结果排列方式,以及数组定义时候的位置,我们可以理解
{11, 22, 33, 44}第一行
{1, 2, 3}第二行
元素11,元素1第一列
元素22,元素2第一列
元素33,元素3第一列
元素44第一列

五、 多维数组

多维数组可以看成数组中的数组,即数组中存储的类型为数组即是多维数组,在二维数组的基础上多加若干组数据即可,定义方式也相差无几。

六、 Java 容器

在 Java 语言中,提供了一个可以支持动态扩容的数组容器:ArrayList。ArrayList就是动态数组,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处


参考
java.util.ArrayList
API参考链接:点击跳转至ArrayList

方法 说明
boolean add(E e) 将指定的元素添加到此列表的尾部。
void add(int index, E element) 将指定的元素插入此列表中的指定位置。
boolean addAll(Collection c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
boolean addAll(int index, Collection c) 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中
void clear() 移除此列表中的所有元素。
Object clone() 返回此 ArrayList 实例的浅表副本。
boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true。
void ensureCapacity(int minCapacity) 如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。
E get(int index) 返回此列表中指定位置上的元素。
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
boolean isEmpty() 如果此列表中没有元素,则返回 true
int lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。
E remove(int index) 移除此列表中指定位置上的元素。
boolean remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。
protected void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。
E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
Object[] toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
T[] toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
void trimToSize() 将此 ArrayList 实例的容量调整为列表的当前大小。

记得点赞!!!!!!!!!!

你可能感兴趣的:(数据结构与算法,java,数据结构)