2016-07-23 11 views
1

Ok also ich möchte diese arrayslist so zusammenführen, dass sie sich ineinander schieben und den Satz unten erstellen. Ausgang: „Das ist der Satz, den ich versuche zu rekonstruieren“Verschmelzung mehrerer Arraylists <String> in einen

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,); 

ich die list.addall (list2) zu verwenden, habe versucht, aber es stellt nur jede Liste direkt neben dem anderen. Wie kann ich die Liste integrieren?

+2

können Sie helfen, einen Array mit dem 'length = size' aus der Liste erstellen und den Inhalt an das Array an dem bestimmten Ort, wenn' Inhalte hinzufügen! = „“ ' – Blobonat

Antwort

0

Sie können so etwas wie haben unter

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

Hinzufügen Raum vor jedem Wort (außer dem ersten) sieht nicht richtig aus. Sie können dies vermeiden, indem Sie StringJoiner mit Leerzeichen als Trennzeichen verwenden. – Pshemo

0

Unter der Annahme, dass die angegebenen Listen gleiche Größe haben. Sie können einen ähnlichen Code verwenden.

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

Der folgende Code funktioniert nur, wenn Sie sicher sind, dass jede Position der Wörter ist einzigartig:

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()); 

Wenn Sie eine neue Liste zu tun, dies zu schaffen:

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

Sie können dies versuchen. Ich hoffe, dass diese

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)); 
     } 
    }