Arrays用法整理

本文介绍了Java.util.Arrays类中常用的方法,包括asList用于创建固定大小的List,binarySearch进行数组搜索,copyOf及copyOfRange复制数组元素,sort方法对数组进行排序,toString和deepToString用于打印数组内容,equals和deepEquals比较数组是否相等,fill方法填充数组。
摘要由CSDN通过智能技术生成

本文将整理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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值