2016-08-19 11 views
5

Piszę program Java i używam następujący kod do przypisywania pewnych zmiennych do tablicy:Przypisywanie wszystkie wartości do tablicy na całej

for(int j=1;j<P.maxNetworkPow;j++){ 
    node.succList[j]=node.succ.succList[j-1]; 
} 

Kto wie, w jaki sposób można przypisać wszystkie wartości do macierz bez pętli for?

+2

można użyć [ 'System.arraycopy'] (https://docs.oracle.com/javase/7/ docs/api/java/lang/System.html # arraycopy% 28java.lang.Object,% 20int,% 20java.lang.Object,% 20int,% 20int% 29) coś podobnego do 'System.arraycopy (node.succ.succList , 0, node.succList, 1, P.maxNetworkPow-1) ' – khelwood

+0

Nie rozumiem, jak ludzie sądzą, że to pytanie dotyczy wypełniania tablicy, podczas gdy OP wyraźnie chce kopiować z jednej tablicy do drugiej – QBrute

Odpowiedz

5

Użyj Arrays.fill(node.succList, value)javadoc. Jeśli chcesz wypełnić tablicę jedną wartością.

Jeśli chcesz init tablicę z drugiej używać

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)javadoc

1

Jak khelwood użytkownik wskazał, można użyć System.arraycopy skopiować elementy określonym zakresie z jednej tablicy do drugiej.

Podpis metoda jest:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
  • src jest tablica źródło, które chcesz skopiować
  • srcPos jest pozycja startowa w tablicy źródłowej
  • dest jest tablica przeznaczenia chcesz skopiować dane do
  • destPos to pozycja wyjściowa w docelowej tablicy
  • length jest liczba elementów tablicy kopiowane

Twoim przypadku, byłoby

System.arraycopy(node.succ.succList, 0, node.succList, 1, P.maxNetworkPow - 1); 

Czyli Skopiuj P.maxNetworkPow - 1 elementy z node.succ.succList przy rozruchu indeks 0 do tablicy node.succList przy rozruchu indeks 1 .

Trzeba uważać jednak, że P.maxNetworkPow nie jest większa niż długość każdej tablicy, albo dostaniesz IndexOutOfBoundsException

1

Używaj System.arraycopy. Przykład w sposób następujący:

import java.lang.*; 

public class SystemDemo { 

    public static void main(String[] args) { 

    int arr1[] = { 0, 1, 2, 3, 4, 5 }; 
    int arr2[] = { 5, 10, 20, 30, 40, 50 }; 

    // copies an array from the specified source array 
    System.arraycopy(arr1, 0, arr2, 0, 1); 
    System.out.print("array2 = "); 
    System.out.print(arr2[0] + " "); 
    System.out.print(arr2[1] + " "); 
    System.out.print(arr2[2] + " "); 
    System.out.print(arr2[3] + " "); 
    System.out.print(arr2[4] + " "); 
    } 
} 

wyprodukuje: tablica2 = 0 10 20 30 40

Powiązane problemy