1.创建数组的4种方式
//Four solutions to create an array in Java
//Take [1,2,3] as example
//Solution 1
int[] a = {1,2,3};
System.out.println("a: "+Arrays.toString(a));
//Solution 2
int[] b = new int[]{1,2,3};
//Solution 3
int[] c = new int[3];
for(int i = 0; i < a.length; i++) {
c[i] = i+1;
}
System.out.println("c: "+Arrays.toString(c));
//Solution 4
ArrayList<Integer> arr = new ArrayList<>();
for(int i = 0; i < 3; i++) {
arr.add(i+1);
}
//[1,2,3]
System.out.println("arr:"+arr.toString());
2.添加元素(适合上述Solution 4使用)
// Add element
// Time Complexity:O(1)
arr.add(99);
// [1,2,3,99]
System.out.println("arr: "+arr.toString());
// Insert element
// Time Complexity:O(N)
arr.add(3, 88);
// [1,2,3,88,99]
System.out.println("arr: "+arr.toString());
3.访问元素,通过下标(索引)访问
// Access element
// Time Complexity: O(1)
int c1 = c[1];
int arr1 = arr.get(1);
// 1
System.out.println("c1: "+c1);
System.out.println("arr1: "+arr1);
4.更新元素
// Update element
// Time Complexity: O(1)
c[1] = 11;
arr.set(1, 11);
// 1 -> 11
System.out.println("c1: "+c[1]);
System.out.println("arr1: "+arr.get(1));
5.删除元素
// Remove element
// Time Complexity:O(N)
arr.remove(3);
System.out.println("arr1: "+arr.get(1));
6.数组长度
在创建数组的时候,Java内部会形成一个count计算数组的大小,要获得数组大小的时候,计算机会直接取到count的值,而不是再遍历一遍,所以时间复杂度是O(1)。
// The length of an array
// Time Complexity:0(1)
int cSize = c.length
int arrSize = arr.size();
System.out.println("c length: "+cSize);
System.out.println("arr length: "+arrSize);
7.遍历数组
// Iterate an array
// Time Complexity: O(N)
// Iterate c
for (int i = 0; i < c.length; i++) {
int current = c[i];
System.out.println("c at index "+i+": "+current);
}
// Iterate arr
for (int i = 0; i < arr.size(); i++) {
int current = arr.get(i);
System.out.println("arr at index "+i+": "+current);
}
8.查找元素
// Find an element
// Time Complexity: O(N)
// Find an element in c
for (int i = 0; i < c.length; i++) {
if (c[i] == 99) {
System.out.println("We found 99 in c!");
}
}
// Find an element in arr
boolean is99 = arr.contains(99);
System.out.println("Are we found 99 in arr? "+is99);
9.数组排序
// Sort an array by built-in lib
c = new int[]{2,3,1};
arr = new ArrayList<>();
arr.add(2);
arr.add(3);
arr.add(1);
// [2,3,1]
System.out.println("c: "+Arrays.toString(c));
System.out.println("arr: "+arr.toString());
// from small to big
// Time complexity: O(NlogN)
Arrays.sort(c);
// [1,2,3]
System.out.println("c: "+Arrays.toString(c));
Collections.sort(arr);
System.out.println("arr: "+arr);
// From big to small
// Time complexity: O(NlogN)
// For c, you can read an array in reverse
// Arrays.sort(T[], Collections.reverseOrder());
// For arr
Collections.sort(arr, Collections.reverseOrder());
// [3,2,1]
System.out.println("arr: "+arr);