2016-07-23 1 views
1

Хорошо, поэтому я хочу объединить эти массивы таким образом, чтобы они шлифовались друг в друга и создавали предложение ниже. Выход: «Это предложение, что я пытаюсь реконструировать»Объединение нескольких Arraylists <String> в один

List<String> list1 = Arrays.asList(This, , , , , , , , reconstruct); 
List<String> list2 = Arrays.asList (, is, the, , , , trying, ,); 
List<String> list3 = Arrays.asList(, , ,sentence, that, I'm, , to,); 

Я пытался использовать list.addall (песни2), но это просто помещает каждый список прямо рядом с другой. Как интегрировать список?

+2

Вы можете создать массив с 'длиной = size' из списка и добавить содержимое в массив в определенном месте, если' контенте! = «» ' – Blobonat

ответ

0

Вы можете иметь что-то вроде ниже

List<String> list1 = Arrays.asList("This", "", "", "", "", "", "", "", " reconstruct"); 
    List<String> list2 = Arrays.asList("", " is", " the", "", "", "", " trying", "", ""); 
    List<String> list3 = Arrays.asList("", "", "", " sentence", " that", " I'm", "", " to", ""); 

    StringBuilder sentense = new StringBuilder(); 
    for (int i = 0; i < list1.size(); i++) { 
     sentense.append(list1.get(i)).append(list2.get(i)).append(list3.get(i)); 
    } 
    System.out.print(sentense.toString()); 
+1

Добавление пространства перед каждым слово (кроме первого) не выглядит правильным. Вы можете избежать этого, используя StringJoiner с пробелом в качестве разделителя. – Pshemo

0

Предполагая, что данные списки имеют одинаковый размер. Вы можете использовать код, похожий на этот.

for(int i =0; i<list1.size();i++){ 
    if(list1.get(i)==""){ 

    //replace with sentence from other lists 
     if(list2.get(i)!=""){ 
      list1.add(i,list2.get(i)); 
     } 
     else if(list3.get(i)!=""){ 
      list1.add(i,list3.get(i)); 
     } 
    } 
    } 
0

Следующий код будет работать только если вы уверены, что каждая позиция слова уникальна:

List<String> list1 = Arrays.asList(This, , , , , , , , reconstruct); 
List<String> list2 = Arrays.asList (, is, the, , , , trying, ,); 
List<String> list3 = Arrays.asList(, , ,sentence, that, I'm, , to,); 

String txt = ""; 
for (int i = 0; i < list1.size(); i++) { 
    txt = txt + list1.get(i) + list2.get(i) + list3.get(i) + " "; 
} 
System.out.println(txt.trim()); 

Если вы хотите создать новый список вариантов:

List<String> myList = new ArrayList<String>(); 
String txt = ""; 
for (int i = 0; i < list1.size(); i++) { 
    txt = list1.get(i) + list2.get(i) + list3.get(i); 
    myList.add(txt); 
} 
0

Вы можете попробовать это. Я надеюсь, что это может помочь

List<String> list1 = Arrays.asList("This", "", "", "", "", "", "", "", "reconstruct"); 
    List<String> list2 = Arrays.asList ("", "is", "the", "", "", "", "trying", "",""); 
    List<String> list3 = Arrays.asList("", "", "","sentence", "that", "Im", "", "to",""); 
    List<String> mergedValue = new ArrayList<>(); 

    for(int i = 0; i<list1.size();i++){ 
     if(list1.get(i)!=""){ 
      mergedValue.add(list1.get(i)); 
     } 
     if(list2.get(i)!=""){ 
      mergedValue.add(list2.get(i)); 
     } 
     if(list3.get(i)!=""){ 
      mergedValue.add(list3.get(i)); 
     } 
    } 
Смежные вопросы