目录
一、Arrays方法
补充:批量拷贝copyOfRang(a,b,c)拷贝数组a中b~c个元素
注意:查找binarySearch()是调用二分查找方法,需要数组是有序的
import java.util.Arrays;
import java.util.Random;
public class ArraysTest {
public static void main(String[] args) {
testSort();
testSearch();
testCopy();
testFill();
testEquality();
}
public static void testSort() {
Random r = new Random();
int[] a = new int[10];
for(int i=0;i<a.length;i++) {
a[i] = r.nextInt();
}
System.out.println("===============测试排序================");
System.out.println("排序前");
for(int i=0;i<a.length;i++) {
System.out.print(a[i] + ",");
}
System.out.println();
System.out.println("排序后");
Arrays.sort(a);//数组从小到大排序
for(int i=0;i<a.length;i++) {
System.out.print(a[i] + ",");
}
System.out.println();
}
public static void testSearch() {
Random r = new Random();
int[] a = new int[] {1,3,8,11,16,10000,20000};
System.out.println("10000 的位置是" + Arrays.binarySearch(a, 10000));
//二分查找,数组必须是有序的
}
public static void testCopy() {
Random r = new Random();
int[] a = new int[10];
for(int i=0;i<a.length;i++)
{
a[i] = r.nextInt();
}
int[] b = Arrays.copyOf(a, 5);//拷贝前5个元素
int[] c = Arrays.copyOfRange(a,5,7);//拷贝第6,7个元素
System.out.println("===========测试拷贝前五个元素============");
System.out.print("源数组:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i] + ",");
}
System.out.println();
System.out.print("目标数组b:");
for(int i=0;i<b.length;i++)
{
System.out.print(b[i] + ",");
}
System.out.println();
System.out.print("目标数组c:");
for(int i=0;i<c.length;i++)
{
System.out.print(c[i] + ",");
}
System.out.println();
}
public static void testFill() {
int[] a = new int[10];
Arrays.fill(a, 100);//批量赋值
Arrays.fill(a, 2, 8, 200);//将第3~第8个数赋值为200
System.out.println("===========测试批量赋值============");
System.out.print("数组赋值后:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i] + ",");
}
System.out.println();
}
public static void testEquality() {
int[] a = new int[10];
Arrays.fill(a, 100);
int[] b = new int[10];
Arrays.fill(b, 100);
System.out.println(Arrays.equals(a, b));//判断两个数组是否全部相同
b[9] = 200;
System.out.println(Arrays.equals(a, b));
}
}
输出:
===============测试排序================
排序前
1079613929,-249307162,1858076332,-1775961197,967912729,-2044942948,1549414184,-184331753,387600052,-395102236,
排序后
-2044942948,-1775961197,-395102236,-249307162,-184331753,387600052,967912729,1079613929,1549414184,1858076332,
10000 的位置是5
===========测试拷贝前五个元素============
源数组:303993413,509695292,-1502192306,1294810261,1195479283,-938567673,-1605844750,1473593266,1085135408,939741738,
目标数组b:303993413,509695292,-1502192306,1294810261,1195479283,
目标数组c:-938567673,-1605844750,
===========测试批量赋值============
数组赋值后:100,100,200,200,200,200,200,200,100,100,
true
false
二、Collections
import java.util.ArrayList;
import java.util.Collections;
public class CollectionsTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(12);
list.add(19);
// 排序
Collections.sort(list);
// 检索
System.out.println("元素所在的索引值是:" + Collections.binarySearch(list, 12));
//最大最小
System.out.println("最大值:" + Collections.max(list));
System.out.println("最小值:" + Collections.min(list));
Collections.reverse(list); //翻转不需要用到排序
Collections.fill(list, 100); //全部赋值为100
}
}
输出:
元素所在的索引值是:2
最大值:19
最小值:1
参考:中国大学mooc《java核心技术》