2015-05-06 3 views
1

Я пытаюсь перебрать массив int в списке массивов, который я просматривал во всех, которые содержат один массив в иерархии массивов, но теперь я пытаюсь перебрать два массива int в списке массивов, как добиться этого в одном арраисте?Как перебрать два массива int в arraylist

static void arraylist() 
{ 
    int []a={1,4,6,7}; 
    int []b={2,3,5}; 

    ArrayList<int[]> aa=new ArrayList<int[]>(); 
    aa.add(a); 
    aa.add(b); 

    int[] contentFromList = aa.get(0) ; 
    for (int i = 0; i < contentFromList.length; i++) { 
     int j = contentFromList[i]; 
     System.out.println("Value at index - "+i+" is :"+j); 
    } 
} 

выход:

Value at index - 0 is :1 
Value at index - 1 is :4 
Value at index - 2 is :6 
Value at index - 3 is :7 

ответ

0

Добавить еще один цикл, как показано ниже,

Отформатируйте код, приведенный ниже.

static void arraylist() { 
     int []a={1,4,6,7}; 
     int []b={2,3,5}; 

     ArrayList<int[]> aa=new ArrayList<int[]>(); 
     aa.add(a); 
     aa.add(b); 

     for(int k = 0; k < aa.size(); k++) { 
      int[] contentFromList = aa.get(k) ; 
      for (int i = 0; i < contentFromList.length; i++) { 
       int j = contentFromList[i]; 
       System.out.println("Value at index - "+ i +" is :" + j); 
      } 
     } 
} 

Согласно моему пониманию вашего комментария, может быть, вам понадобится код ниже.

static void arraylist() { 
     int []a={1,4,6,7}; 
     int []b={2,3,5}; 

     ArrayList<int[]> aa=new ArrayList<int[]>(); 
     aa.add(Arrays.asList(a)); 
     aa.add(Arrays.asList(b)); 

     int[] contentFromList = aa.get(k) ; 
     for (int i = 0; i < contentFromList.length; i++) { 
      int j = contentFromList[i]; 
      System.out.println("Value at index - "+ i +" is :" + j); 
     } 
} 

Arrays.asList(a) превратит ваш массив «а» к List, который затем будет добавлен в ваш ArrayListаа. После этого все элементы станут частью единого списка.

+1

это показать ошибку на этой линии для (INT к = 0, к в int – user3607180

+2

изменить его на 'int k = 0; k

+0

k извините, я не посмотрел сейчас, я исправил – user3607180

0

Еще одна петля, необходимая для арраиста. Ниже приведен код

static void arraylist() 
    { 
     int []a={1,4,6,7}; 
     int []b={2,3,5}; 

     ArrayList<int[]> aa=new ArrayList<int[]>(); 
     aa.add(a); 
     aa.add(b); 

     for(int z=0; z < aa.size(); z++){ 
      int[] contentFromList = aa.get(z); 

      for (int i = 0; i < contentFromList.length; i++) { 
       int j = contentFromList[i]; 
       System.out.println("Value at index - "+i+" is :"+j); 
      } 
     } 
0

Просто добавьте еще 1 цикл для чтения данных из второго массива также:

static void arraylist() 
{ 
    int []a={1,4,6,7}; 
    int []b={2,3,5}; 

    ArrayList<int[]> aa=new ArrayList<int[]>(); 
    aa.add(a); 
    aa.add(b); 

for(int k = 0; k < aa.size(); k++) { 
int[] contentFromList = aa.get(k) ; 
for (int i = 0; i < contentFromList.length; i++) { 
    int j = contentFromList[i]; 
    System.out.println("Value at index - "+i+" is :"+j); 
      } 
    } 
} 
0

Я не вижу причин, чтобы смешать Collection (s) и массив. Итак, я хотел бы начать с

List<List<Integer>> aa = new ArrayList<>(); 

Тогда вы могли бы добавить Integer[] значения как

Integer[] a = { 1, 4, 6, 7 }; 
Integer[] b = { 2, 3, 5 }; 
List<List<Integer>> aa = new ArrayList<>(); 
aa.add(Arrays.asList(a)); 
aa.add(Arrays.asList(b)); 
System.out.println(aa); 

и получить

[[1, 4, 6, 7], [2, 3, 5]] 

С другой стороны, если вы должны использовать List<int[]>, то что-то вроде

int[] a = { 1, 4, 6, 7 }; 
int[] b = { 2, 3, 5 }; 
List<int[]> aa = new ArrayList<>(); 
aa.add(a); 
aa.add(b); 
System.out.print("["); 
for (int i = 0; i < aa.size(); i++) { 
    if (i != 0) { 
     System.out.print(", "); 
    } 
    System.out.print(Arrays.toString(aa.get(i))); 
} 
System.out.println("]"); 

необходим для производства предыдущего выхода. Java-массивы не переопределяют Object.toString()

0

Java8 Stream решение.

Это легко и эффективно, вы получаете выгоду ленивым оценки:

aa.stream().flatMap(arr -> { 

     Stream.Builder<Integer> build = Stream.builder(); 
     for(int i = 0; i < arr.length; i++) 
      build.add(arr[i]); 
     return build.build(); 

}).forEach(System.out::println); 
+0

спасибо за код обновления ur .. – user3607180

Смежные вопросы