原创 Java Gossip: Arrays 類別

2009-3-18 23:11 2104 4 4 分类: 软件与OS

陣列中基本操作的排序、搜尋與比較等動作是很常見的,在Java中提供了Arrays類別可以協助您作這幾個動作,Arrays類別位於java.util套
件中,它提供了幾個靜態方法可以直接呼叫使用。
sort() 這個方法可以幫助您對指定的陣列排序,所使用的是快速排序法
binarySearch
()
這個方法可以讓您對已排序的陣列進行二元搜尋,如果找到指定的值就傳回該值所 在的索引,否則就麼回負值
fill() 當我們配置一個陣列之後,其會依資料型態來給定預設值,例如整數陣列就初始為 0,您可以使用Arrays.fill()方法來將所有的元素設定
為指定的值
equals() 比較兩個陣列中的元素值是否全部相等,如果是將傳回true,否則傳回 false


 


import java.util.Scanner;
import java.util.Arrays;


public class UseArrays {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  
  int[] arr = {93, 5, 3, 55, 57, 7, 2 ,73, 41, 91};


  System.out.print("排序前: ");
  for(int i = 0; i < arr.length; i++)
   System.out.print(arr + " ");
  System.out.println();


  Arrays.sort(arr);


  System.out.print("排序後: ");
   for(int i = 0; i < arr.length; i++)
  System.out.print(arr + " ");


  System.out.print("\n請輸入搜尋值: ");
  int key = scanner.nextInt();
  int find = -1;
  if((find = Arrays.binarySearch(arr, key)) > -1) {
   System.out.println("找到值於索引 " +
   find + " 位置");
  }
  else
   System.out.println("找不到指定值");
 }
}


C:\Documents and Settings\Administrator\java>java UseArrays
排序前: 93 5 3 55 57 7 2 73 41 91
排序後: 2 3 5 7 41 55 57 73 91 93
請輸入搜尋值: 41
找到值於索引 4 位置


C:\Documents and Settings\Administrator\java>java UseArrays
排序前: 93 5 3 55 57 7 2 73 41 91
排序後: 2 3 5 7 41 55 57 73 91 93
請輸入搜尋值: 40
找不到指定值


 


import java.util.Scanner;
import java.util.Arrays;


public class UseArrays {
/*
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  
  int[] arr = {93, 5, 3, 55, 57, 7, 2 ,73, 41, 91};


  System.out.print("排序前: ");
  for(int i = 0; i < arr.length; i++)
   System.out.print(arr + " ");
  System.out.println();


  Arrays.sort(arr);


  System.out.print("排序後: ");
   for(int i = 0; i < arr.length; i++)
  System.out.print(arr + " ");


  System.out.print("\n請輸入搜尋值: ");
  int key = scanner.nextInt();
  int find = -1;
  if((find = Arrays.binarySearch(arr, key)) > -1) {
   System.out.println("找到值於索引 " +
   find + " 位置");
  }
  else
   System.out.println("找不到指定值");
 }
*/
 public static void main(String args[]) {
  int[] arr1 = new int[10];
  int[] arr2 = new int[10];
  int[] arr3 = new int[10];


  Arrays.fill(arr1, 5);
  Arrays.fill(arr2, 5);
  Arrays.fill(arr3, 10);
  System.out.print("arr1: ");
  for(int i = 0; i < arr1.length; i++)
   System.out.print(arr1 + " ");
  System.out.println("\narr1 = arr2 ? " +
   Arrays.equals(arr1, arr2));
  System.out.println("arr1 = arr3 ? " +
   Arrays.equals(arr1, arr3));
 }
}


C:\Documents and Settings\Administrator\java>java UseArrays
arr1: 5 5 5 5 5 5 5 5 5 5
arr1 = arr2 ? true
arr1 = arr3 ? false


事實上,J2SE 5.0 對Arrays類別作了不少的修改與新增,由此可見陣列操作在程式中的重要性,這邊介紹Arrays新增的兩個方法:
deepEquals()與deepToString()。
deepEquals() 對陣列作深層比較,簡單的說,您可以對二維仍至三維以上的陣列進行比較是否相等
直接來看個程式比較清楚:
deepToString()
將陣列值作深層輸出,簡單的說,您可以對二維仍至三維以上的陣列輸出其字串值


 


import java.util.Arrays;


public class UseArrays {
 public static void main(String args[]) {
  int[][] arr1 = {{1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}};
  int[][] arr2 = {{1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}};
  int[][] arr3 = {{0, 1, 3},
    {4, 6, 4},
    {7, 8, 9}};


  System.out.println("arr1 equals arr2? " +
    Arrays.deepEquals(arr1, arr2));
  System.out.println("arr1 equals arr3? " +
    Arrays.deepEquals(arr1, arr3));
  System.out.println("arr1 equals arr2? " +
    Arrays.deepToString(arr1));
 }
}


C:\Documents and Settings\Administrator\java>java UseArrays
arr1 equals arr2? true
arr1 equals arr3? false
arr1 equals arr2? [[1, 2, 3], [4, 5, 6], [7, 8, 9]]


 


 


 

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条