Java基础类库之Arrays 类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18948359/article/details/85214106

Arrays 类

Arrays 类 是操作数组的类,被定义在 java.util 包中,主要功能是实现数组元素的查找、数组内容的填充、排序等。Arrays 类提供的方法都是 static 方法。

常用的方法:

产生新的数组:

  • <T> List<T> asList(T... a): 将传入的参数变成数组(可以是任意的类型)。
  • type[] copyOf(type[] original, int newLength): 这个方法将会把 original 数组复制成一个新的数组,length 是新数组的长度。
    • 如果 newlength < original.length,则新数组就是 original 前面 length 个元素。
    • 如果 newlength > original.length,则新数组的前面元素就是原数组的所有元素,后面补充 0(数值类型)、false(boolean类型)或者 null(引用类型)
  • type[] copyOfRange(type[] original, int from, int to): 这个方法与前面方法相似,单这个方法只赋值 original 中 from 到 to 元素索引值的元素。

二分查找:

  • int binarySearch(byte[] a, byte key):使用二分查找元素 key 在 a 数组中出现的索引;如果 a 数组不包含 key 元素,则返回负数。调用该方法时,要就数组中的元素已经升序排列。
  • int binarySearch(byte[] a, int fromIndex, int toIndex, byte key): 这个方法与前面一个方法类似,但是它只搜索 a 数组中 fromIndex 到 toIndex 索引的元素。调用该方法时,要就数组中的元素已经升序排列。

排序:

  • void sort(type[] a):该方法对 a 数组进行排序。
  • void sort(type[] a, int fromIndex, int toIndex):与前一个方法作用相同,区别是只是将 fromIndex 到 toIndex 索引位置的元素进行排序。该方法对 a 数组进行排序。

填充值以及其他方法:

  • void fill(type[] a, type val): 该方法将会把 a 数组的所有元素都赋值为 val。
  • void fill(type[] a, int fromIndex, int toIndex, type val):该方法与前面一个方法的作用相同,区别在于只是将 fromIndex 到 toIndex 索引位置的元素赋值为 val。
  • boolean equals(type[] a, type[] a2):如果 a 数组和 a2 数组的长度相等,并且 a数组和 a2 数组的元素也一一相同,改方法将返回 true。
  • String toString(type[] a): 该方法将数组变为 String 类型。
import java.util.Arrays;

public class ArraysTest {

	public static void main(String[] args) {

		/** 数组的比较 **/
		String[] str1 = { "1", "2", "3" };
		String[] str2 = { "1", "2", new String("3") };
		// 数组的长度相等,元素依次相等
		System.out.println(Arrays.equals(str1, str2)); // true

		/** 使用 copyOf 方法赋值数组 **/
		int[] a = new int[] { 3, 34, 5, 8, 2 };
		int[] b = Arrays.copyOf(a, 4);
		int[] c = Arrays.copyOf(a, 8);
		System.out.println(Arrays.toString(b)); // [3, 34, 5, 8]
		System.out.println(Arrays.toString(c)); // [3, 34, 5, 8, 2, 0, 0, 0]

		/** 使用 fill 方法 **/
		// 从第1个索引开始(包括),到3个索引位置(不包括)
		Arrays.fill(b, 1, 3, 1);
		System.out.println(Arrays.toString(b)); // [1, 1, 1, 8]

		/** 使用 sort 排序 **/
		Arrays.sort(a);
		System.out.println(Arrays.toString(a)); // [2, 3, 5, 8, 34]

		/** 使用 binarySearch **/
		// binarySearch:通过二分法的方式找对应元素的下标, 使用前提:必须经过排序才可以使用
		char[] aChar = { 'a', 'b', 'c', 'd', 'e' };
		int i = Arrays.binarySearch(aChar, 'd');
		System.out.println(i);// 3

		char[] bChar = { 'e', 'a', 'c', 'b', 'd' };
		Arrays.sort(bChar);
		int j = Arrays.binarySearch(bChar, 'e');
		System.out.println(j);	// 4
	}
}

Java 8 增强了 Arrays 类的功能,为 Arrays 类增加了一些工具方法,这些工具类方法可以充分利用多CPU 并行的能力来提供设置值、排序的性能。相当于之前的方法名是以 parallel 开头,下面列举一部分:

执行表达式:

  • void setAll(long[] array, IntToLongFunction generator):使用指定的生成器(generator)为所有的数组元素设置值。
  • void parallelSetAll(long[] array, IntToLongFunction generator):和上面的方法一样,区别在于增加了并行能力,可以利用多 CPU 并行来提高性能。

排序:

  • void parallelSort(type[] a):该方法对 a 数组进行并行排序。
  • void parallelSort(type[] a, int fromIndex, int toIndex):与前一个方法作用相同,区别是只是将 fromIndex 到 toIndex 索引位置的元素进行并行排序。该方法对 a 数组进行排序。

stream 流:

  • XxxStream stream(xxx[] array):该方法将数组转换为 Stream。
import java.util.Arrays;

public class ArraysTest {

	public static void main(String[] args) {

		int[] array = { 6, 1, 9, 2, 5, 7 };

		/** setAll 操作 **/
		int[] setAllArr = Arrays.copyOf(array, array.length);
		Arrays.setAll(setAllArr, a -> a * 3);
		System.out.println(Arrays.toString(setAllArr));	// [0, 3, 6, 9, 12, 15]

		Arrays.parallelSort(array);
		System.out.println(Arrays.toString(array)); // [1, 2, 5, 6, 7, 9]
	}
}

猜你喜欢

转载自blog.csdn.net/qq_18948359/article/details/85214106
今日推荐