数组常见操作
- 数组的拷贝
- System类里包含了一个 public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)方法,该方法可以将src数组里的元素赋给dest数组的元素,其中srcPos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素
- 补充:打印数组 Arrays.toString(arr)
public class TestArrayCopy {
<pre name="code" class="java" style="font-size: 18px; font-weight: bold;"> public static void main(String[] args) {
int[] srcArr = new int[]{2,5,3,8,9,7};
int[] destArr = new int[5];
System.arraycopy(srcArr, 1, destArr, 1, 3);
System.out.println(Arrays.toString(destArr));//[0, 5, 3, 8, 0]
}
}
- 数组的排序
- Arrays.sort(arr)
public class TestArraySort {
public static void main(String[] args) {
int[] arr = {23,3,67,44,66,89,12};
System.out.println(Arrays.toString(arr));//[23, 3, 67, 44, 66, 89, 12]
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));//[3, 12, 23, 44, 66, 67, 89]
}
}
- 如果数组中的元素是引用类型,怎么排序?
Man.java
public class Man implements Comparable<Man> {
private int id;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Man() {
}
public Man(int id, int age) {
super();
this.id = id;
this.age = age;
}
@Override
public String toString() {
return "Man [id=" + id + ", age=" + age + "]";
}
@Override
public int compareTo(Man man) {
if(this.age < man.age){
return -1;
}
if(this.age > man.age){
return 1;
}
return 0;
}
}
<pre name="code" class="java" style="font-size: 18px; font-weight: bold;"><pre name="code" class="java">TestArraySort.java
public class TestArraySort {
public static void main(String[] args) {
Man[] mans = new Man[]{new Man(1, 30),new Man(1, 23),new Man(1, 60),new Man(1, 55)};
System.out.println(Arrays.toString(mans));//[Man [id=1, age=30], Man [id=1, age=23], Man [id=1, age=60], Man [id=1, age=55]]
Arrays.sort(mans);
System.out.println(Arrays.toString(mans));//[Man [id=1, age=23], Man [id=1, age=30], Man [id=1, age=55], Man [id=1, age=60]]
}
}
- 数组的二分查找
- Arrays.binarySearch(arr)
public class TestBinarySearch {
public static void main(String[] args) {
int[] arr = {12,3,34,21,45,3,32};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));//[3, 3, 12, 21, 32, 34, 45]
System.out.println(Arrays.binarySearch(arr, 21));//3
}
}
- 数组的填充
- Arrays.fill(arr)
public class TestArrayFill {
public static void main(String[] args) {
int[] arr = {12,3,34,21,45,3,32};
System.out.println(Arrays.toString(arr));//[12, 3, 34, 21, 45, 3, 32]
Arrays.fill(arr,2,4,99);
System.out.println(Arrays.toString(arr));//[12, 3, 99, 99, 45, 3, 32]
}
}
- 数组转换为List
- Arrays.asList(arr)
public class TestArrayAsList {
public static void main(String[] args) {
int[] arr = {12,3,34,21,45,3,32};
List<int[]> list = new ArrayList<int[]>();
list = Arrays.asList(arr);
System.out.println(list.get(0)[3]);//21
}
}
- 冒泡排序
public class TestBubbleSort {
public static void main(String[] args) {
int[] arr = {12,3,34,21,45,3,32};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
int temp;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
- 命令行参数


- System类里包含了一个 public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)方法,该方法可以将src数组里的元素赋给dest数组的元素,其中srcPos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素
- 补充:打印数组 Arrays.toString(arr)
public class TestArrayCopy {
<pre name="code" class="java" style="font-size: 18px; font-weight: bold;"> public static void main(String[] args) { int[] srcArr = new int[]{2,5,3,8,9,7}; int[] destArr = new int[5]; System.arraycopy(srcArr, 1, destArr, 1, 3); System.out.println(Arrays.toString(destArr));//[0, 5, 3, 8, 0] } }
- Arrays.sort(arr)
public class TestArraySort { public static void main(String[] args) { int[] arr = {23,3,67,44,66,89,12}; System.out.println(Arrays.toString(arr));//[23, 3, 67, 44, 66, 89, 12] Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[3, 12, 23, 44, 66, 67, 89] } }
- 如果数组中的元素是引用类型,怎么排序?
Man.java public class Man implements Comparable<Man> { private int id; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Man() { } public Man(int id, int age) { super(); this.id = id; this.age = age; } @Override public String toString() { return "Man [id=" + id + ", age=" + age + "]"; } @Override public int compareTo(Man man) { if(this.age < man.age){ return -1; } if(this.age > man.age){ return 1; } return 0; } }
<pre name="code" class="java" style="font-size: 18px; font-weight: bold;"><pre name="code" class="java">TestArraySort.java public class TestArraySort { public static void main(String[] args) { Man[] mans = new Man[]{new Man(1, 30),new Man(1, 23),new Man(1, 60),new Man(1, 55)}; System.out.println(Arrays.toString(mans));//[Man [id=1, age=30], Man [id=1, age=23], Man [id=1, age=60], Man [id=1, age=55]] Arrays.sort(mans); System.out.println(Arrays.toString(mans));//[Man [id=1, age=23], Man [id=1, age=30], Man [id=1, age=55], Man [id=1, age=60]] } }
- Arrays.binarySearch(arr)
public class TestBinarySearch { public static void main(String[] args) { int[] arr = {12,3,34,21,45,3,32}; Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[3, 3, 12, 21, 32, 34, 45] System.out.println(Arrays.binarySearch(arr, 21));//3 } }
- Arrays.fill(arr)
public class TestArrayFill { public static void main(String[] args) { int[] arr = {12,3,34,21,45,3,32}; System.out.println(Arrays.toString(arr));//[12, 3, 34, 21, 45, 3, 32] Arrays.fill(arr,2,4,99); System.out.println(Arrays.toString(arr));//[12, 3, 99, 99, 45, 3, 32] } }
- Arrays.asList(arr)
public class TestArrayAsList { public static void main(String[] args) { int[] arr = {12,3,34,21,45,3,32}; List<int[]> list = new ArrayList<int[]>(); list = Arrays.asList(arr); System.out.println(list.get(0)[3]);//21 } }
public class TestBubbleSort { public static void main(String[] args) { int[] arr = {12,3,34,21,45,3,32}; bubbleSort(arr); System.out.println(Arrays.toString(arr)); } public static void bubbleSort(int[] arr) { int temp; for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } }