1. 程式人生 > >Java(C#)基礎差異-陣列

Java(C#)基礎差異-陣列

1、填充陣列

Java

陣列填充替換方法Arrays.fill()

舉例如下:

複製程式碼
import java.util.Arrays;
public class FillDemo {

    public static void main(String[] args) {
        int arr[] = new int[5];
        // 使用同一個值對陣列進行填充
        Arrays.fill(arr, 8);
        for (int i = 0; i < arr.length; i++) {
            System.out.println("第" + i + "個元素是:" + arr[i]);
        }
    }

}
複製程式碼

執行結果如下:

 

2、複製陣列

Java 

陣列複製使用方法Arrays.copyOf以及Arrays.copyOfRange

(1)Arrays.copyOf

語法如下:

copyOf(arr,int newlength)

說一下newlength:int型常量,指複製後的新陣列的長度。如果新陣列的長度大於陣列arr的長度,則用0填充(根據複製陣列的型別來決定填充的值,整型陣列用0填充,char型陣列則使用null來填充);如果複製後的陣列長度小於陣列arr的長度,則會從陣列arr的第一個元素開始擷取至滿足新陣列長度為止。

舉例如下:

複製程式碼
import java.util.Arrays;
public class CopyDemo {
    public static void main(String[] args) {
        int arr[] = new int[] { 23, 43, 12 };
        int newarr[] = Arrays.copyOf(arr, 5);
        for (int i = 0; i < newarr.length; i++) {
            System.out.println(newarr[i]);
        }
    }
}
複製程式碼

執行結果如下:

(2)Arrays.copyOfRange

語法如下:

copyOfRange(arr,int fromIndex,int toIndex)

說一說後兩個引數:

fromIndex:指定開始複製陣列的索引位置。fromIndex必須在0至整個陣列的長度之間。新陣列包括索引是formIndex的元素。

toIndex:要複製範圍的最後索引位置。可大於陣列arr的長度。新陣列不包括索引是toIndex的元素。

舉例如下:

複製程式碼
import java.util.Arrays;
public class CopyOfRangeDemo {
    public static void main(String[] args) {
        int arr[] = new int[] { 23, 42, 12, 84, 10 };
        int newarr[] = Arrays.copyOfRange(arr, 0, 8);
        for (int i = 0; i < newarr.length; i++) {
            System.out.println(newarr[i]);
        }
    }
}
複製程式碼

執行結果如下:

3、陣列查詢

Java

binarySearch()

此法為二分搜尋法,故查詢前需要用sort()方法將陣列排序,如果陣列沒有排序,則結果是不確定的,另外如果陣列中含有多個指定值的元素,則無法保證找到的是哪一個。

binarySearch()方法的返回值為:如果找到關鍵字,則返回值為關鍵字在陣列中的位置索引,且索引從0開始;如果沒有找到關鍵字,返回值為負的插入點值,所謂插入點值就是第一個比關鍵字

大的元素在陣列中的位置索引,而且這個位置索引從1開始。

binarySearch(object[ ], object key);

binarySearch(object[ ], int fromIndex, int endIndex, object key);

舉例如下:

複製程式碼
public class SearchDemo {
    public static void main(String[] args) {
        int[] b = new int[] { 4, 25, 10, 95, 06, 21 };
        System.out.println("原陣列為:");
        for (int dim1 : b) {
            System.out.print("" + dim1 + " ");
        }
        Arrays.sort(b);
        System.out.println("排序後為:");
        for (int x : b) {
            System.out.print(x + " ");
        }
        System.out.println();
        int index = Arrays.binarySearch(b, 2);
        System.out.println("關鍵字2的返回值為:" + index);
        index = Arrays.binarySearch(b, 20);
        System.out.println("關鍵字20的返回值為:" + index);
        index = Arrays.binarySearch(b, 30);
        System.out.println("關鍵字30的返回值為:" + index);
        index = Arrays.binarySearch(b, 100);
        System.out.println("關鍵字100的返回值為:" + index);
        index = Arrays.binarySearch(b, 10);
        System.out.println("關鍵字10的返回值為:" + index);
    }
}
複製程式碼

執行結果如下:

 

例項解析:

可以看到 關鍵字2並沒有在陣列中,而且2比陣列中的任何一個元素都小,所以其插入點的值應為元素4的位置也就是1(沒有找到關鍵字從1開始)

關鍵字20也不在陣列中,陣列中第一個比20大的數是21,所以20的插入點值為4(沒用找到關鍵字從索引從1開始)

關鍵字100也不在陣列中,而且100比陣列中所有的元素都大,此時插入點值為length+1 為7(沒有找到關鍵字索引從1開始)

關鍵字10在陣列中,所以返回其在陣列中的索引為2(找到關鍵字索引從0開始)

之所以計算插入點值時索引要從1開始算,是因為-0=0,如果從0開始算,那麼上面例子中關鍵字2和關鍵字4的返回值就一樣了。

 

Code

JavaCode-->JavaVSNet/arraydemo

C#Code--> 

 

from: https://www.cnblogs.com/SimplePerson/p/6417429.html