參考資料1 : https://www.cnblogs.com/ECJTUACM-873284962/p/7363224.html
- java.util.Arrays類(lèi)能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的。具有以下功能:
- 給數(shù)組賦值:通過(guò)fill方法。
- 對(duì)數(shù)組排序:通過(guò)sort方法,按升序。
- 比較數(shù)組:通過(guò)equals方法比較數(shù)組中元素值是否相等。
- 查找數(shù)組元素:通過(guò)binarySearch方法能對(duì)排序好的數(shù)組進(jìn)行二分查找法操作
package com.wpp.array;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import static org.junit.Assert.assertEquals;
/**
* @author wpp25
* @date 2019/10/20 10:38
* @description:
*/
public class StudyArrays {
/**
* binarySerach方法
*/
@Test
public void binarySearch_1Test() {
int index = Arrays.binarySearch(new int[]{1, 2, 3, 4, 5, 6, 7}, 6);
assertEquals(5, index);
index = Arrays.binarySearch(new int[]{1, 2, 3, 4, 5, 6, 7}, 3, 6, 6);
assertEquals(5, index);
assertEquals(7, new int[]{1, 2, 3, 4, 5, 6, 7}[6]);
}
@Test
public void binarySearch_1_1Test() {
int indes = Collections.binarySearch(Arrays.asList(1, 2, 3), 2);
assertEquals(indes, 1);
}
/**
* copyOf及copyOfRange方法
* 復(fù)制
*/
@Test
public void copyOfTest() {
String[] nameArr = {"Eric", "John", "Alan", "Liz"};
String[] copyNameArr = Arrays.copyOf(nameArr, 3);
String[] copyNameArrRange = Arrays.copyOfRange(nameArr, 2, nameArr.length);
Arrays.stream(copyNameArr).forEach(System.out::println);
System.out.println("-----------");
Arrays.stream(copyNameArrRange).forEach(System.out::println);
System.out.println(nameArr);
System.out.println(copyNameArr);
}
/**
* sort
*/
@Test
public void sortTest() {
int[] names = {4, 3, 2, 1};
//只排序前兩個(gè)
//[John, Liz, Eric, Alan]
Arrays.sort(names, 0, 2);
Arrays.stream(names).forEach(System.out::println);
//全部排序
//[Alan, Eric, John, Liz]
System.out.println("------------");
Arrays.sort(names);
Arrays.stream(names).forEach(System.out::println);
}
/**
* public static <T> void sort(T[] a, Comparator<? super T> c) {
* if (LegacyMergeSort.userRequested)
* legacyMergeSort(a, c);
* else
* TimSort.sort(a, c);
* }
* TODO
*/
@Test
public void sort_extend_compartorTest() {
Date[] dataArr = {};
}
/**
*Arrays的toString方法可以方便我們打印出數(shù)組內(nèi)容
*/
@Test
public void toStringTest() {
String[] names = {"liz","john","eric","alan"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));// [alan, eric, john, liz]
}
/**
* 如果需要打印二維數(shù)組的內(nèi)容:
* int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
* 如果直接用
*
* System.out.println(Arrays.toString(stuGrades));
* 那么得到的結(jié)果類(lèi)似于
* [[I@35ce36, [I@757aef, [I@d9f9c3]}
* 這個(gè)時(shí)候得用 deepToString 方法才能得到正確的結(jié)果[[80, 81, 82], [84, 85, 86], [87, 88, 89]]
*/
@Test
public void deepToStringTest () {
int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
System.out.println(Arrays.deepToString(stuGrades));
}
@Test
public void equalsTest() {
String[] names1 = { "Eric", "John", "Alan", "Liz" };
String[] names2 = { "Eric", "John", "Alan", "Liz" };
System.out.println(Arrays.equals(names1, names2));
}
@Test
public void deepEqualsTest() {
int[][] stuGrades1 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
int[][] stuGrades2 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));
}
@Test
public void fillTest() {
int[] array1 = new int[8];
Arrays.fill(array1, 1);
//[1, 1, 1, 1, 1, 1, 1, 1]
System.out.println(Arrays.toString(array1));
Arrays.fill(array1,3,4,9);
System.out.println(Arrays.toString(array1));
}
}