数组
(本篇文章内容包含网上资料,如有侵权请联系博主)
一、概念
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。
(1)、声明
dataType[] arrayRefVar;
dataType []arrayRefVar;
dataType arrayRefVar[];
声明一个数组有基本的三个因素:类型、名称、下标,Java里数组在格式上相对灵活,下标和名称可以互换位置。
(2)、创建
arrayRefVar = new dataType[arraySize];
- 使用 dataType[arraySize] 创建了一个数组。
- 把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成:
dataType[] arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组索引从0到arrayRefVar.length-1
(3)、遍历数组
double[] myList = {1.9, 2.9, 3.4, 3.5};
// for打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// foreach打印所有数组元素
for (double element: myList) {
System.out.println(element);
}
二、多维数组
多维数组可以看成是数组的数组。
type arrayName = new type[arraylenght1][arraylenght2];
type 可以为基本数据类型和复合数据类型,arraylenght1 和 arraylenght2 必须为正整数,arraylenght1 为行数,arraylenght2 为列数。
从最高维开始,分别为每一维分配空间,例如:
String s[][] = new String[2][];
s[0] = new String[2];
s[1] = new String[3];
s[0][0] = new String("Good");
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");
三、Arrays类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
- 给数组赋值:通过 fill 方法。
- 对数组排序:通过 sort 方法,按升序。
- 比较数组:通过 equals 方法比较数组中元素值是否相等。
- 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
import java.util.Arrays;
public class TestArrays {
public static void output(int[] array) {
if (array != null) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
System.out.println();
}
public static void main(String[] args) {
int[] array = new int[5];
// 填充数组
Arrays.fill(array, 5);
System.out.println("填充数组:Arrays.fill(array, 5):");
TestArrays.output(array);
// 将数组的第2和第3个元素赋值为8
Arrays.fill(array, 2, 4, 8);
System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):");
TestArrays.output(array);
int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 };
// 对数组的第2个到第6个进行排序进行排序
Arrays.sort(array1, 2, 7);
System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):");
TestArrays.output(array1);
// 对整个数组进行排序
Arrays.sort(array1);
System.out.println("对整个数组进行排序:Arrays.sort(array1):");
TestArrays.output(array1);
// 比较数组元素是否相等
System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n" + Arrays.equals(array, array1));
int[] array2 = array1.clone();
System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n" + Arrays.equals(array1, array2));
// 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)
Arrays.sort(array1);
System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):" + "\n" + Arrays.binarySearch(array1, 3));
// 如果不存在就返回负数
System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):" + "\n" + Arrays.binarySearch(array1, 9));
}
}
输出结果:
填充数组:Arrays.fill(array, 5):5 5 5 5 5
将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):5 5 8 8 5
对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):7 8 2 3 3 6 12 5 4
对整个数组进行排序:Arrays.sort(array1):2 3 3 4 5 6 7 8 12
比较数组元素是否相等:Arrays.equals(array, array1):false
克隆后数组元素是否相等:Arrays.equals(array1, array2):true
元素3在array1中的位置:Arrays.binarySearch(array1, 3):1
元素9在array1中的位置:Arrays.binarySearch(array1, 9):-9
将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):5 5 8 8 5
对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):7 8 2 3 3 6 12 5 4
对整个数组进行排序:Arrays.sort(array1):2 3 3 4 5 6 7 8 12
比较数组元素是否相等:Arrays.equals(array, array1):false
克隆后数组元素是否相等:Arrays.equals(array1, array2):true
元素3在array1中的位置:Arrays.binarySearch(array1, 3):1
元素9在array1中的位置:Arrays.binarySearch(array1, 9):-9