Arrays用法整理

来源:互联网 发布:网络用语mmp是什么意思 编辑:程序博客网 时间:2024/06/07 00:23
本文将整理java.util.Arrays工具类比较常用的方法: 

本文介绍的方法基于JDK 1.7 之上。 

1.  asList方法  

Java代码  收藏代码
  1. @SafeVarargs  
  2. public static <T> List<T> asList(T... a) {  
  3.     return new ArrayList<>(a);  
  4. }  


   使用该方法可以返回一个固定大小的List,如: 

Java代码  收藏代码
  1. List<String> stringList = Arrays.asList("Welcome""To""Java",  
  2.         "World!");  
  3.   
  4. List<Integer> intList = Arrays.asList(1234);  

   
2. binarySearch方法 

 

binarySearch方法支持在整个数组中查找,如: 

Java代码  收藏代码
  1. int index = Arrays.binarySearch(new int[] { 1234567 }, 6);  


以及在某个区间范围内查找, 如: 

Java代码  收藏代码
  1. public static int binarySearch(int[] a, int fromIndex, int toIndex,  
  2.                                int key) {  
  3.     rangeCheck(a.length, fromIndex, toIndex);  
  4.     return binarySearch0(a, fromIndex, toIndex, key);  
  5. }  

Java代码  收藏代码
  1. int index = Arrays.binarySearch(new int[] { 1234567 }, 166);  


3. copyOf及copyOfRange方法 


 


如: 

Java代码  收藏代码
  1. String[] names2 = { "Eric""John""Alan""Liz" };  
  2.   
  3.   
  4.         //[Eric, John, Alan]  
  5.         String[] copy = Arrays.copyOf(names2, 3);  
  6.           
  7.         //[Alan, Liz]  
  8.         String[] rangeCopy = Arrays.copyOfRange(names2, 2,  
  9.                 names2.length);  


4. sort方法 

Java代码  收藏代码
  1. String[] names = { "Liz""John""Eric""Alan" };  
  2. //只排序前两个  
  3. //[John, Liz, Eric, Alan]  
  4. Arrays.sort(names, 02);  
  5. //全部排序  
  6. //[Alan, Eric, John, Liz]  
  7. Arrays.sort(names);  


另外,Arrays的sort方法也可以结合比较器,完成更加复杂的排序。 
Java代码  收藏代码
  1. public static <T> void sort(T[] a, Comparator<? super T> c) {  
  2.     if (LegacyMergeSort.userRequested)  
  3.         legacyMergeSort(a, c);  
  4.     else  
  5.         TimSort.sort(a, c);  
  6. }  


5. toString方法 

Arrays的toString方法可以方便我们打印出数组内容。 

如: 

Java代码  收藏代码
  1. String[] names = { "Liz""John""Eric""Alan" };  
  2. Arrays.sort(names);  
  3. System.out.println(Arrays.toString(names));  


控制台将打印出 [Alan, Eric, John, Liz] 

6. deepToString方法 

如果需要打印二维数组的内容: 

int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } }; 

如果直接用
Java代码  收藏代码
  1. System.out.println(Arrays.toString(stuGrades));  
那么得到的结果类似于 
     [[I@35ce36, [I@757aef, [I@d9f9c3]} 

这个时候得用deepToString方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]] 

Java代码  收藏代码
  1. System.out.println(Arrays.deepToString(stuGrades));  


7. equals方法 

使用Arrays.equals来比较1维数组是否相等。 

Java代码  收藏代码
  1. String[] names1 = { "Eric""John""Alan""Liz" };  
  2.   
  3.         String[] names2 = { "Eric""John""Alan""Liz" };  
  4.   
  5.         System.out.println(Arrays.equals(names1, names2));  



8. deepEquals方法 

Arrays.deepEquals能够去判断更加复杂的数组是否相等。 

Java代码  收藏代码
  1. int[][] stuGrades1 = { { 808182 }, { 848586 }, { 878889 } };  
  2.   
  3.         int[][] stuGrades2 = { { 808182 }, { 848586 }, { 878889 } };  
  4.   
  5.         System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));  


9. fill方法 
Java代码  收藏代码
  1. int[] array1 = new int[8];  
  2.         Arrays.fill(array1, 1);  
  3.         //[1, 1, 1, 1, 1, 1, 1, 1] 
  4.   System.out.println(Arrays.toString(array1)); 

文章转自:http://mouselearnjava.iteye.com/blog/1985990?utm_source=tuicool&utm_medium=referral


0 0
原创粉丝点击