【问题标题】:Merging several Arraylists <String> into one将多个 Arraylist <String> 合并为一个
【发布时间】:2016-07-23 15:25:04
【问题描述】:

好的,所以我想合并这些数组列表,使它们相互插入并创建下面的句子。 输出:“这是我要重构的句子”

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(list2) 但它只是将每个列表放在另一个旁边。如何整合列表?

【问题讨论】:

  • 您可以使用列表中的length = size 创建一个数组,如果content!="" 则将内容添加到特定位置的数组中

标签: java arraylist indexing


【解决方案1】:

你可以有类似下面的东西

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

【讨论】:

  • 在每个单词(第一个除外)之前添加空格看起来不正确。您可以通过使用带有空格作为分隔符的 StringJoiner 来避免它。
【解决方案2】:

假设给定的列表具有相同的大小。您可以使用类似的代码。

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

【讨论】:

    【解决方案3】:

    只有在您确定单词的每个位置都是唯一的情况下,以下代码才会起作用:

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

    【讨论】:

      【解决方案4】:

      你可以试试这个。我希望这能有所帮助

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-26
        • 2015-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 2013-12-20
        相关资源
        最近更新 更多