2016-07-23 40 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)); 
     } 
    }