欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDK源码( java.util.Arrays)

程序员文章站 2024-03-06 22:35:08
...

java.util.Arrays

方法: asList

api介绍:

返回由指定数组支持的固定大小的列表。 (将返回的列表更改为“写入数组”。)
该方法作为基于数组和基于集合的API之间的桥梁,与Collection.toArray()相结合 。 
返回的列表是可序列化的,并实现RandomAccess 。
		// String[]转list
        String[] strings = {"Larry", "Moe", "Curly"};
        List<String> list1 = Arrays.asList(strings);
        for (String s : list1) {
            System.out.println("String[]转list  "+s);
        }

         //直接声明一个集合
        List<String> list = Arrays.asList("Larry", "Moe", "Curly");
        for (String s : list) {
            System.out.println("直接声明一个集合 "+s);
        }

方法: hashCode

api介绍:

根据指定数组的内容返回哈希码。 对于任何两个long阵列a和b这样Arrays.equals(a, b) ,
也是Arrays.hashCode(a) == Arrays.hashCode(b)的情况。 
通过此方法返回的值是将通过调用能够得到相同的值hashCode上的方法List含有序列Long个实例表示
的a以相同顺序的元素。 如果a是null ,则此方法返回0。 
		String[] list_a = {"Larry", "Moe", "Curly"};
        String[] list_b = {"Larry", "Moe", "Curly"};
        System.out.println(list_a.hashCode());
        System.out.println(list_b.hashCode());
        System.out.println(Arrays.equals(list_a,list_b));

方法 toString

api介绍:

返回指定数组的内容的字符串表示形式。 字符串表示由数组元素的列表组成,
括在方括号( "[]" )中。 相邻的元素由字符", " (逗号后跟一个空格)分隔开。
 元素被转换为字符串由String.valueOf(long)。 返回"null"如果a是null。
   	long[] list1 = new long[]{1,2,3};
       String list1Str = Arrays.toString(list1);
       System.out.println(list1Str);

方法 binarySearch

api介绍:

	使用二进制搜索算法搜索指定值的指定字节数组的范围。 在进行此呼叫之前,
	范围必须按照sort(byte[], int, int)方法进行排序。 如果没有排序,结果是未定义的。
	如果范围包含具有指定值的多个元素,则不能保证将找到哪个元素。 
		int arr[] = new int[]{1, 3, 4, 5, 8, 9};
        Arrays.sort(arr);
        int index1 = Arrays.binarySearch(arr, 6);
        int index2 = Arrays.binarySearch(arr, 4);
        int index3 = Arrays.binarySearch(arr, 0);
        int index4 = Arrays.binarySearch(arr, 10);
        System.out.println("index1 = " + index1 + ", index2 = " + index2 + ",
		 index3 = " + index3 + ", index4 = " + index4);
		 
		 
		 
		 
		int arr[] = new int[]{1, 3, 4, 5, 8, 9};
        System.out.println(arr.length + 1);
        Arrays.sort(arr);
        int index5 = Arrays.binarySearch(arr, 1, 4, 6);
        int index6 = Arrays.binarySearch(arr, 1, 4, 4);
        int index7 = Arrays.binarySearch(arr, 1, 4, 2);
        int index8 = Arrays.binarySearch(arr, 1, 3, 10);
        int index9 = Arrays.binarySearch(arr, 1, 3, 0);

        System.out.println("index5 = " + index5 + ", index6 = " + index6 + ", index7 = " + index7+"," +
                " index8 = "+index8+  " index9 = "+index9
        ); 
		 

方法 copyOf copyOfRange

api介绍:

copyOf:
	复制指定的数组,截断或填充false (如有必要),以使副本具有指定的长度。 对于原始数组和副本都有效的所有索引,
	两个数组将包含相同的值。 对于在副本中而不是原件有效的任何索引,副本将包含false 。 当且仅当指定长度大于原始
	数组的长度时,这些索引才会存在。
copyOfRange:
	将指定数组的指定范围复制到新数组中。 范围( from )的初始指数必须在零和original.length之间,包括在内。 
	original[from]的值被放置在副本的初始元素中(除非from == original.length或from == to )。
	原始数组中后续元素的值将被放置在副本中的后续元素中。 必须大于或等于from的范围( to )的最终指数可能
	大于original.length ,在这种情况下, null被放置在其索引大于或等于original.length - from的副本的
所有元素中。 返回的数组的长度将为to - from 。 
		int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = Arrays.copyOf(arr1, 5);
        int[] arr3 = Arrays.copyOf(arr1, 10);
        int[] arr4 =Arrays.copyOfRange(arr1,1,2);
        for(int i = 0; i < arr2.length; i++){
            System.out.print(arr2[i] + " ");
        }
        System.out.println();
        for(int i = 0; i < arr3.length; i++){
            System.out.print(arr3[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < arr4.length; i++) {
            System.out.println(arr4[i]);
        }
        

方法 sort

api介绍:

照数字顺序排列指定的数组。 
<关系不提供所有浮动值的总订单: -0.0f == 0.0f是true ,而Float.NaN值比较不小于,大于或等于任何值,甚至本身。
 该方法使用方法Float.compareTo(java.lang.Float) : -0.0f处理为小于值0.0f和Float.NaN的总顺序被认为大于任
 何其他值,并且所有Float.NaN值被视为相等。 

实施注意事项:排序算法是由Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch提供的双轴快速排序。 该算法在许
多数据集上提供O(n log(n))性能,导致其他快速排序降级为二次性能,并且通常比传统(单轴)Quicksort实现更快。 
		int[] ints=new int[]{2,324,4,57,1};

        System.out.println("增序排序后顺序");
        Arrays.sort(ints);
        for (int i=0;i<ints.length;i++) {
            System.out.print(ints[i]+" ");
        }

方法 fill

api介绍:

	将指定的char值分配给指定的char数组的指定范围的每个元素。 要填补的范围从索引fromIndex (包括)扩展到索引
	toIndex ,排他。 (如果fromIndex==toIndex ,要填充的范围是空的。)
        int[] a = new int[]{1,2,3,4,5,6};
        System.out.println(Arrays.toString(a));  //{1,2,3,4,5,6}

        Arrays.fill(a, 0);
        System.out.println(Arrays.toString(a));  //{0,0,0,0,0,0}
相关标签: Java