package com.javabase.javabase.arrays;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @Author ShawnYang
* @Date 2019-10-31 11:31
* @Description TODO
* 修改人:
* 修改时间:
* 修改备注:
*/
public class ArraysTest {
private int[] arr1 = new int[]{1, 3, 2, 4};
private int[] arr2 = new int[]{1, 3, 2, 4};
private int[] arr3 = new int[]{1, 3, 2, 4};
private Integer[] arr4 = new Integer[]{1, 3, 2, 4};
@Test
public void test() {
//1.boolean equals(int[] a,int[] b):判断两个数组是否相等,类似于equals 比较的是内容
boolean equals = Arrays.equals(arr1, arr2);
System.out.println("1 equalsTest " + equals);
//2.String toString(int[] a):输出数组信息字符串(并不是输出数组元素字符串)并且比较和arr1.toString()的区别,数组并没有重写toString方法。
System.out.println("2.1 toStringTest " + arr1);
System.out.println("2.2 toStringTest " + arr1.toString());
String s = Arrays.toString(arr1);
System.out.println("2.3 toStringTest " + s);
//3.void fill(int[] a,int val):将指定值填充到数组之中。所有元素都被填充,不是追加
Arrays.fill(arr1, 5);
System.out.println("3 fillTest " + Arrays.toString(arr1));
//4.void sort(int[] a):对数组进行排序。
Arrays.sort(arr2);
System.out.println("4 fillTest " + Arrays.toString(arr2));
//5.int binarySearch(int[] a,int key)
int index = Arrays.binarySearch(arr2, 3);
if (index >= 0) {
System.out.println("5 fillTest " + index);
} else {
System.out.println("5 fillTest " + "not found");
}
//6. Arrays.asList 把数组装换为list,aslist 的入参是可变形参,List<T> asList(T... a),注意下面两者的区别
// 6.1当如下输入基本数据类型的集合时,aslist 把输入的数组当做1个元素的可变个数入参,所以会生成只有一个数组元素的List
List<int[]> ints = Arrays.asList(arr3);
System.out.println("6.1 Arrays.asListTest " + ints);
// 6.2当如下输入引用数据类型的集合时,aslist 把输入的数组中的每个元素都当成一个可变元素的入参,数组中所有元素组成的List
List<Integer> integers = Arrays.asList(arr4);
System.out.println("6.2 Arrays.asListTest " + integers);
//7.集合和数组,以及数组和集合之间的装换
//7.1 数组装换为集合
// 方法一、数组遍历后放入进新建的集合中
ArrayList<Integer> integerList = new ArrayList<>();
for (int i : arr3) {
integerList.add(i);
}
System.out.println("7.1.1 " + integerList);
// 方法二、Arrays.asList 方法 如上(略)
// 方法三、Collections.addAll 方法(只能是arr4 不能是arr3 这个入参是可变形参,和6中的原因一样)
ArrayList<Integer> integerList2 = new ArrayList<>();
Collections.addAll(integerList2,arr4);
System.out.println("7.1.2 " + integerList2);
//7.2 集合装换为数组(注意转换时的自动拆箱
// 方法一、循环遍历
int[] ints1 = new int[integerList.size()];
integerList.forEach(i -> ints1[integerList.indexOf(i)]=i);
System.out.println("7.2.1 " + Arrays.toString(ints1));
// 方法二、toArray 方法
// Object[] objects = integerList.toArray();
Integer[] ts = integerList.toArray(new Integer[integerList.size()]);
System.out.println("7.2.2 " +Arrays.toString(ts));
}
}
1 equalsTest true
2.1 toStringTest [I@e2d56bf
2.2 toStringTest [I@e2d56bf
2.3 toStringTest [1, 3, 2, 4]
3 fillTest [5, 5, 5, 5]
4 fillTest [1, 2, 3, 4]
5 fillTest 2
6.1 Arrays.asListTest [[I@244038d0]
6.2 Arrays.asListTest [1, 3, 2, 4]
7.1.1 [1, 3, 2, 4]
7.1.2 [1, 3, 2, 4]
7.2.1 [1, 3, 2, 4]
7.2.2 [1, 3, 2, 4]
参考