【Java学习日记】#7 数组 #2 数组的基本操作 数组的相关方法(java.util包中的Array类 Arrays.)

数组

前面一直没用目录,感觉还是用一下清晰一点
前面的也懒得改了orz
有时间有心情的时候可能会改一下

数组的基本操作

遍历数组 foreach

遍历二维数组

int a[][] = {{4,3},{1,2}};
int i=0;
for(int x[]:a) {
	i++;
	int j=0;
	for(int e:x) {
		j++;
		if(i==a.length&&j==x.length) {
			System.out.print(e);
		}else {
			System.out.print(e+"、");
		}
	}
}

也没啥特殊,就是一维数组的特殊遍历方法

for(int x:a)
填充替换数组元素 fill()

1.fill( int[] a, int value )
将指定的int值分配给int型数组的每个元素
a:要进行元素替换的数组
value:要存储数组中的所有元素的值

把a中的元素全部换成value

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[]{1,2,3,4,5};
		Arrays.fill(a, 8);
		for(int i:a) System.out.println(i);
	}
}

输出结果:

8
8
8
8
8

2.fill( int[] a, int fromIndex, int toIndex, int value )
将指定的int值分配给int型数组指定范围内的每个元素
从fromIndex(包括)一直覆盖到toIndex(不包括
若指定范围大于数组的长度,会报错 ArrayIndexOutOfBoundsException

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[]{1,2,3,4,5};
		Arrays.fill(a,1,3,9);
		for(int i:a) System.out.println(i);
	}
}

输出结果:

1
9
9
4
5

对数组进行排序 sort()
Arrays.sort(object)

对任意类型数组进行升序排序

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[]{5,6,2,3,7};
		Arrays.sort(a);
		for(int i:a) System.out.println(i);
	}
}

2
3
5
6
7

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		String a[] = new String[]{"我","是","天","才"};
		Arrays.sort(a);
		for(String i:a) System.out.println(i);
	}
}




复制数组 copyOf()、copyOfRange

1.copyOf()

copyOf(arr, int newlength)

arr:要进行复制的数组
newlength:复制后新数组的长度。若大于arr的长度,多出部分用0填充(int类型;char类型用null填充)。若小于arr的长度,则截取arr至新数组填满为止。

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[] {1,2,3,4,5};
		int b[] = Arrays.copyOf(a, 5);
		for(int i:b) System.out.println(i);
	}
}

1
2
3
4
5

2.copyOfRange()

copyOfRange(arr, int fromIndex, int toIndex)

arr:要进行复制的数组
fromIndex:指定开始复制数组的索引位置。必须在0至整个数组长度之间。新数组包括索引是fromIndex的元素。
toIndex:要复制范围的最后索引,可以大于数组的长度新数组不包括索引是toIndex的元素。

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[] {1,2,3,4,5};
		int b[] = Arrays.copyOfRange(a,1,3);
		for(int i:b) System.out.println(i);
	}
}

2
3

数组查询 binarySearch()

使用二分搜索法来搜索指定数组,以获得指定对象。
返回元素的索引值
1. binarySearch(Object[],Object key)
a:要搜索的数组
key:要搜索的值
如果key在数组里,则返回搜索值的索引;否则返回-1或==“-”插入点==(插入点前加个符号)(总而言之就是负数)
插入点:所搜建将要插入数组的那一点,即第一个大于此键的元素索引
也就是升序排序后有序插入该元素的位置
例如下面的例子:
查找10的时候,元素排完序以后应该是{1,4,5,7,9},所以10的插入点应该在最后,也即6,所以返回-6。

因为是二分查找,查找前需要先排序

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[] {5,4,1,7,9};
		Arrays.sort(a);
		int b = Arrays.binarySearch(a, 4);
		System.out.println(b);
		int c = Arrays.binarySearch(a, 10);
		System.out.println(c);
	}
}

1
-6

2. binarySearch(Object[], int fromIndex, int toIndex, Object key)
a:要进行搜索的数组
fromIndex:开始位置(包含)
toIndex:结束位置(不包含)
key:要搜索的元素

import java.util.Arrays;
public class HelloJava {
	public static void main(String[] args) {
		int a[] = new int[] {5,4,1,7,9};
		Arrays.sort(a);
		int b = Arrays.binarySearch(a,2,4,4);
		System.out.println(b);
		int c = Arrays.binarySearch(a,0,4,4);
		System.out.println(c);
	}
}

-3
1

指定范围大于等于数组长度,会报错

猜你喜欢

转载自blog.csdn.net/BAOZEE/article/details/107560845