【问题标题】:Convert a List<List<string>> to string[]将 List<List<string>> 转换为 string[]
【发布时间】:2013-10-26 09:35:48
【问题描述】:

&lt;List&lt;List&lt;string&gt;&gt; 转换为字符串数组的最短方法是什么?

我尝试使用foreach 循环,但在这种情况下,我的数组没有索引,所以我无法填充数组!? :-(

        foreach (List<string> list in myList)
        {
            foreach (string s in list)
            {
                Array[s] = list.ToArray;
            }
        }

【问题讨论】:

  • 自己数数有什么问题?
  • 使用 for 循环代替 foreach
  • 你需要一个字符串数组还是一个字符串列表数组?
  • 为什么你有像“string”这样的小写字符串,以及什么是Array[s] - 'Array' 是否伪装成变量名?
  • 重点是,Java 中没有foreach 关键字。代码在我看来更像 C#。

标签: java arrays string list


【解决方案1】:

首先,计算String[]数组的大小。

int size = 0;
for(List list : myList)
{
   size += list.size();
}
String[] array = new String[size];

然后,用每个列表中的所有字符串填充数组:

int i = 0;
for (List<String> list : myList) {
    for (String s : list) {
        array[i++] = s;
    }
}

【讨论】:

    【解决方案2】:

    首先你需要知道数组需要多大(这是因为Java中的数组不能是动态的;不能动态改变它们的大小):

    int max = 0;
    for(List<String> list : myList)
    {
       max += list.size();
    }
    String[] array = new String[max];
    

    然后使用你的 foreach 循环(请注意,它有不同的语法)和一个额外的变量来保持当前索引:

    int i = 0;
    for(List<string> list : myList)
    {
        for(String s : list)
        {
            array[i++] = s;
        }
    }
    

    还请注意String 的拼写方式。

    【讨论】:

    • Java 中没有 foreach 这样的东西。
    【解决方案3】:

    使用for(int i=0; i&lt;myList.size(); i++){ ... }

    【讨论】:

      【解决方案4】:

      你可以使用这样的东西:

      int i=0;
      foreach (List<string> list in myList)
              {
                  foreach (string s in list)
                  {
                      Array[i] = s;
                      i++;
                  }
              }
      

      【讨论】:

        【解决方案5】:
        List<List<String>> lisfOfList = new ArrayList<List<String>>();
        
        List<String> result = new ArrayList<String>();
        for(List<String> list : lisfOfList){
            result.addAll(list);
        }
        
        String[] s = result.toArray(new String[result.size()]);
        

        【讨论】:

          【解决方案6】:

          这样试试,

          List list1 = new ArrayList();

          list1.add("aa");

          list1.add("bb");

          List list2 = new ArrayList();

          list2.add("cc");

          list2.add("dd");

          list2.add("ee");

          List> arrL = new ArrayList>();

          arrL.add(list1);

          arrL.add(list2);

          List strList = new ArrayList();

          for (List list : arrL)

          { strList.addAll(list); }

          String []strArray = new String[strList.size()];

          strList.toArray(strArray);

          for(字符串字符串:strArray)

          { System.out.println(string); }

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-09-17
            • 2021-01-13
            • 1970-01-01
            • 2021-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-18
            相关资源
            最近更新 更多