Arrays所在的包是Java.util.*,Arrays提供的全部是static方法。

1.转字符串

1.1 一维数组–public static String toString(int[] a)

参数即可以是基础类型数组,也可以是包装类型数组,也可以是对象数组。

// 一维数组转字符串
int[] arrays = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(arrays)); // [1,2,3,4,5]

1.2.二维数组–public static String deepToString(Object[] a)

// 二维数组转字符串
int[][] arrays2 = new int[][]{{1,2,3,4,5}, {6,7,8,9,10}};
System.out.println(Arrays.deepToString(arrays2)); // [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]

2.转列表

2.1 一维数组–public static
List

asList(T… a)

2.1.1 泛型参数

// 一维数组转转列表(泛型参数:基础类型数组要转为包装类型数组)
int[] arrays3 = new int[]{1,2,3,4,5};
System.out.println(Arrays.asList(arrays3)); // 对象(基础类型无法泛型化,对象可以泛型化)

Integer[] arrays4 = new Integer[]{1,2,3,4,5};
System.out.println(Arrays.asList(arrays4)); // [1,2,3,4,5]

2.1.2 改变列表长度

// 一维数组转转列表(改变列表长度:会抛异常,通过new ArrayList规避)
Integer[] arrays5 = new Integer[]{1,2,3,4,5};
List<Integer> list = Arrays.asList(arrays5);
// list.add(6); // 抛异常(无法修改长度)
// list.remove(); // 抛异常(无法修改长度)

List<Integer> list2 = new ArrayList<>(Arrays.asList(arrays5)); // 修改长度的方法
list2.add(6);
System.out.println(list2); // [1,2,3,4,5,6]

2.1.3 改变列表内容

// 一维数组转转列表(改变列表内容:数组同时变化)
Integer[] arrays6 = new Integer[]{1,5,2,3,4};
List<Integer> list3 = new ArrayList<>(Arrays.asList(arrays6));
list3.sort(Comparator.naturalOrder());
System.out.println(list3); // [1,2,3,4,5,6]
System.out.println(arrays6); // [1, 2, 3, 4, 5]

2.2 二维数组–public static
List

asList(T… a)

// 二维数组转列表
Integer[][] arrays7 = new Integer[][]{{1,2,3,4,5}, {6,7,8,9,10}};
List<Integer[]> list4 = Arrays.asList(arrays7);
System.out.println(list4);

3.相等

3.1 一维数组–public static boolean equals(int[] a, int[] a2)

// 一维数组判断是否相等:顺序和值都相同
int[] arrays = new int[]{1,2,3,4,5};
int[] arrays2 = new int[]{1,2,3,5,4};
int[] arrays3 = new int[]{1,2,3,4,5};
System.out.println(Arrays.equals(arrays,arrays2)); // false
System.out.println(Arrays.equals(arrays,arrays3)); // true

3.2 二维数组–public static boolean deepEquals(Object[] a1, Object[] a2)

// 二维数组判断是否相等:顺序和值都相同
Integer[][] arrays4 = new Integer[][]{{1,2,3,4,5}, {6,7,8,9,10}};
Integer[][] arrays5 = new Integer[][]{{1,2,3,5,4}, {6,7,8,9,10}};
Integer[][] arrays6 = new Integer[][]{{1,2,3,4,5}, {6,7,8,9,10}};
System.out.println(Arrays.equals(arrays4,arrays5)); // false
System.out.println(Arrays.deepEquals(arrays4,arrays5)); // false
System.out.println(Arrays.deepEquals(arrays4,arrays6)); // true

4.填充

4.1 一维数组–public static void fill(boolean[] a, boolean val)

4.1.1 给空数组填充

// 给空数组填充,还是空数组
int[] arrays = new int[]{};
Arrays.fill(arrays, 1);
System.out.println(Arrays.toString(arrays)); // []

4.1.2 给非空数组填充(全部填充/部分填充)

// 全部填充
Integer[] arrays2 = new Integer[]{1,2,3,4,5};
Arrays.fill(arrays2, 1);
System.out.println(Arrays.toString(arrays2)); // [1, 1, 1, 1, 1]

// 部分填充
int[] arrays3 = new int[]{1,2,3,4,5};
Arrays.fill(arrays3, 1,3,8);
System.out.println(Arrays.toString(arrays3)); // [1, 8, 8, 4, 5]

4.2 二维数组–不支持

5.复制

5.1 一维数组

5.1.1 copyOf

// 拷贝--copyOf
Integer[] array1 = new Integer[]{1,2,3,4,5};
Integer[] array2 = Arrays.copyOf(array1, 3);
System.out.println(Arrays.toString(array2)); // [1, 2, 3]

5.1.2 copyOfRange

// 拷贝--copyOfRange 左闭右开
Integer[] array3 = Arrays.copyOfRange(array1, 3,5);
System.out.println(Arrays.toString(array3)); // [4, 5]

5.2 二维数组–不支持

6.查找

6.1 一维数组

public static int binarySearch(int[] a, int key)
public static int binarySearch(int[] a, int fromIndex, int toIndex,int key)
public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
public static <T> int binarySearch(T[] a, int fromIndex, int toIndex,T key, Comparator<? super T> c)

6.1.1 二分查找

规则:
image.png

// 数组无序
Integer[] array = new Integer[]{1,2,3,8,5,4,4};
Integer index1 = Arrays.binarySearch(array, 5); // -4
System.out.println(index1);

// 数组有序
Arrays.sort(array);
Integer index2 = Arrays.binarySearch(array, 5);
System.out.println(index2); // 5

// 多个相同元素
Integer index3 = Arrays.binarySearch(array, 4);
System.out.println(index3); // 3

// 不包含该元素
Integer index4 = Arrays.binarySearch(array, 7);
System.out.println(index4); // -7

6.1.2 比较器查找

ComparableTest[] comparableTests = new ComparableTest[]{
		new ComparableTest("林青霞", 27),
		new ComparableTest("风清扬", 30),
		new ComparableTest("刘晓曲", 28)
};

int index=Arrays.binarySearch(comparableTests, new ComparableTest("林青霞", 27));
System.out.println(index); // 0


public class ComparableTest implements Comparable<ComparableTest> {
	private String name;

	private int age;

	public ComparableTest(String name, int age) {
		this.name = name;
		this.age = age;
	}

	@Override
	public int compareTo(ComparableTest s) {
		int num = this.age - s.age;
		int num1 = (num == 0 ? this.name.compareTo(s.name) : num);
		return num1;
	}
}

6.2 二维数组–不支持

7.排序

7.1 一维数组

7.1.1 默认排序(升序)

// 全部排序
Integer[] array = new Integer[]{1,2,3,8,5,4,4};
Arrays.sort(array); // 默认升序排列
System.out.println(Arrays.toString(array)); // [1, 2, 3, 4, 4, 5, 8]

// 部分排序--左闭右开
Integer[] array2 = new Integer[]{1,2,3,8,5,4,4};
Arrays.sort(array2, 0,5); // 默认升序排列
System.out.println(Arrays.toString(array2)); // [1, 2, 3, 5, 8, 4, 4]

7.1.2 比较器排序

全部排序和部分排序

// 全部排序
ComparableTest[] comparableTests = new ComparableTest[]{
	new ComparableTest("林青霞", 31),
	new ComparableTest("刘晓曲", 30),
	new ComparableTest("风清扬", 28)
};

Arrays.sort(comparableTests);
for (int index = 0; index < comparableTests.length; index++) {
	System.out.println(comparableTests[index].getName());
}

// 全部排序
Integer[] array = new Integer[]{1,2,3,8,5,4,4};
Arrays.sort(array, new ComparatorTest());
System.out.println(Arrays.toString(array));

// 部分排序
ComparableTest[] comparableTests2 = new ComparableTest[]{
		new ComparableTest("林青霞", 31),
		new ComparableTest("刘晓曲", 30),
		new ComparableTest("风清扬", 28)
};

Arrays.sort(comparableTests2, 0, 2);
for (int index = 0; index < comparableTests2.length; index++) {
	System.out.println(comparableTests2[index].getName());
}

// 全部排序
Integer[] array2 = new Integer[]{1,2,3,8,5,4,4};
Arrays.sort(array2, 0,4, new ComparatorTest());
System.out.println(Arrays.toString(array2)); // [8, 3, 2, 1, 5, 4, 4]

7.2 二维数组–不支持

8.计算

8.1 一维数组

8.1.1 单个元素–setAll/parallelSetAll

int[] array = {1, 2, 3, 4, 5};
Arrays.setAll(array,x->x*x);
System.out.println(Arrays.toString(array)); // [0, 1, 4, 9, 16]

int[] array2 = {1, 2, 3, 4, 5};
Arrays.parallelSetAll(array2,x->x*x);
System.out.println(Arrays.toString(array2)); // [0, 1, 4, 9, 16]

8.1.2 两个元素–parallelPrefix

String[] s1 = {"java", "c++", "html", "css", "Javascript", "world"};
System.out.println(Arrays.toString(s1));   //[java, c++, html, css, Javascript, world]

Arrays.parallelPrefix(s1, String::concat);
System.out.println(Arrays.toString(s1));   //[java, javac++, javac++html, javac++htmlcss, javac++htmlcssJavascript, javac++htmlcssJavascriptworld]

int[] a = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(a));  //[1, 2, 3, 4, 5]

Arrays.parallelPrefix(a, (x, y) -> x * y);
System.out.println(Arrays.toString(a));  //[1, 2, 6, 24, 120]

Arrays.parallelPrefix(a, 2, 4, (x, y) -> x / y);
System.out.println(Arrays.toString(a));  //[1, 2, 6, 0, 120]  也可指定范围

8.2 二维数组–不支持

9.stream

原文地址:http://www.cnblogs.com/wanglei5205/p/16886569.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性