Arrays方法和Collections方法的运用随记——JAVA

目录

 

一、Arrays方法

二、Collections


一、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核心技术》

发布了55 篇原创文章 · 获赞 17 · 访问量 5011

猜你喜欢

转载自blog.csdn.net/weixin_43698704/article/details/103961239