2017-05-05 3 views

Antwort

2

Ihr Code ist nicht weit entfernt. Gerade die Zeilennummer als erster Index in Ihre 2D-Array verwenden, wenn Sie eine einzelne 1D Scheibe als eine Reihe übergeben möchten:

public int function1(int [][] arr) { 
    for (int i=0; i < arr.length; i++) { 
     uniqueH(arr[i]); 
    } 
} 
0

Ihre Notwendigkeit Auf einer Reihe oder eine Spalte zu schneiden - Sie könnte ein anpassen wenig und verwenden Sie Integer anstelle von int und verwenden Sie eine Iterable.

class Sliced<T> { 
    final T[][] data; 

    public Sliced(T[][] data) { 
     this.data = data; 
    } 

    public Iterable<T> row(int i) { 
     // Just make a list. 
     return Arrays.asList(data[i]); 
    } 

    public Iterable<T> col(int i) { 
     return new Iterable<T>() { 

      @Override 
      public Iterator<T> iterator() { 
       return new Iterator<T>() { 
        int row = 0; 

        @Override 
        public boolean hasNext() { 
         return row < data.length; 
        } 

        @Override 
        public T next() { 
         return data[row++][i]; 
        } 
       }; 
      } 
     }; 
    } 
} 

public void test() { 
    System.out.println("Hello"); 
    Integer[][] a = { 
      {1, 2, 3, 4, 5}, 
      {1, 2, 3, 4, 5}, 
      {1, 2, 3, 4, 5}, 
      {1, 2, 3, 4, 5}, 
    }; 
    for (Integer v : new Sliced<>(a).col(1)) { 
     System.out.println(v); 
    } 
    for (Integer v : new Sliced<>(a).row(1)) { 
     System.out.println(v); 
    } 
} 
Verwandte Themen