2015-03-13 3 views
0

Если бы это было до меня, я бы петля на Java для цикла с несколькими списками таким образом:Java цикл Несколько списков Одновременно

for (String s1, s2, s3 : arrayOfString1, arrayOfString2, arrayOfString3) 
    { 
    System.out.println("arrayOfString1" + s1); 
    System.out.println("arrayOfString2" + s2); 
    System.out.println("arrayOfString3" + s3); 
    } 

К сожалению, это не ко мне, как я пошел бы о зацикливании инструкции for с несколькими списками?

+0

Сделайте это отдельно в одном потоке или имеющем три потока? – xcoder

+0

являются списками одного размера? – Fred

+0

@xcoder Мне нужно сделать это одновременно, потому что все 3 результата позже будут переданы в пределах одного и того же цикла «for», также обратите внимание, что каждый s (число) является списком строк, поэтому цикл будет помещать каждую строку в новую строку BUT каждая строка из 3 списков в одной строке. – TwoStarII

ответ

1

попробовать это списки с различными размерами:

int len = arrayOfString1.size(); 
len = Math.max(len, arrayOfString2.size()); 
len = Math.max(len, arrayOfString3.size()); 
for (int i = 0; i < len; i++) { 
    if (i < arrayOfString1.size()) System.out.println("arrayOfString1" + arrayOfString1.get(i)); 
    if (i < arrayOfString2.size()) System.out.println("arrayOfString2" + arrayOfString2.get(i)); 
    if (i < arrayOfString3.size()) System.out.println("arrayOfString3" + arrayOfString3.get(i)); 
} 

и если вы использовали массивы, а не списки:

int len = arrayOfString1.length; 
len = Math.max(len, arrayOfString2.length); 
len = Math.max(len, arrayOfString3.length); 
for (int i = 0; i < len; i++) { 
    if (i < arrayOfString1.length) System.out.println("arrayOfString1" + arrayOfString1[i]); 
    if (i < arrayOfString2.length) System.out.println("arrayOfString2" + arrayOfString2[i]); 
    if (i < arrayOfString3.length) System.out.println("arrayOfString3" + arrayOfString3[i]); 
} 
+0

Спасибо, ваш второй метод работал! Я использую массив. Спасибо всем, кто ответил. – TwoStarII

4

Я думаю, вы сделали длины всех массивов одинаковыми. с помощью индекса Решение:

for (int i=0;i<arrayOfString1.length();++i) { 
    System.out.println("arrayOfString1" + arrayOfString1.get(i)); 
    System.out.println("arrayOfString2" + arrayOfString2.get(i)); 
    System.out.println("arrayOfString3" + arrayOfString3.get(i)); 
} 

Если вы хотите использовать итератор, делать, как показано ниже: (. Я печатать только два массива, например)

for(Iterator<int> i1=arr1.iterator(),i2=arr2.iterator();i1.hasNext();){ 
    int val1= i1.next(); 
    int val2= i2.next(); 
} 
+0

Я пошел с первым вариантом, но столкнулся с этим: Не могу вызывать length() для типа массива String [], позвольте мне быстро преобразовать его и сообщить вам – TwoStarII

+0

После преобразования String [] в String ошибка «Метод get (int) не определен для типа String», также i является int, get (i) вернет int, я хочу вернуть строки в array не целое число или их длина – TwoStarII

+0

Если это массив, используйте 'arr.length' и' arr [i] ' – Turtle

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