【问题标题】:how dow i get a String[][] to an Arraylist<String[][]>我如何将 String[][] 获取到 Arraylist<String[][]>
【发布时间】:2015-10-16 04:06:06
【问题描述】:

我有一个二维数组,我想将其转换为 Arraylist。我应该如何组织这样的列表?

例如当我有数组时

String[][] things={{"dog", "cat", "wolf"},
                   {"carrot", "apple", "banana"}};

我想要列表

List<what is proper type?> Galg = ...

这将允许我将行索引为 x 并从索引为 y 的行中获取项目?

【问题讨论】:

  • 这个问题没有意义,因为第一种是二维的,第二种是3维的。另外 .. 包括语言标签 并删除所有不相关的标签。
  • 也许这个问题没有意义,因为我做错了。也许这也是我问这个问题的原因。但无论如何,谢谢。
  • 您能否举例说明该列表的内容以及您希望如何使用它?
  • 现在我投票搁置您的问题,因为目前尚不清楚您想要实现什么。当您提供有关您希望如何使用该列表以及该列表应包含哪些数据的更多信息时,我将撤回我的投票或投票以重新提出此问题。
  • 什么不清楚?我只想要一个包含 {"dog", "cat", "wolf"} 和 {"carrot", "apple", "banana"} 的 Arraylist。为什么不清楚我不明白?

标签: java arrays string list arraylist


【解决方案1】:

看起来您正在寻找ArrayList&lt;ArrayList&lt;String&gt;&gt; 或者更好地让我们在接口而不是实际类型上编程,并使我们的参考更通用(这也意味着灵活,因为它可以处理许多列表,而不仅仅是ArrayList)与

List<List<String>> list = new ArrayList<List<String>>();

或者从 Java 7 开始,我们可以使用菱形运算符缩短它并推断泛型类型

List<List<String>> list = new ArrayList<>();

你可以通过类似的代码来创建它

String[][] things={{"dog", "cat", "wolf"},{ "carrot", "apple", "banana"}};
List<List<String>> list = new ArrayList<>();
for (String[] row : things){
    list.add(new ArrayList<>(Arrays.asList(row)));
}

并像使用它

System.out.println(list.get(1).get(2));//get row indexed as 1, 
                                       //and from it item indexed as 2

尝试将列表视为一维数组。实际上所有数组都是一维的,因为二维数组只是一维数组,其中元素是其他一维数组(您正在嵌套一维数组)。

所以你的数组

A{     
  [0] -> B{ 
           [0] -> "dog", 
           [1] -> "cat", 
           [2] -> "wolf"
         }
  [1] -> C{ 
           [0] -> "carrot", 
           [1] -> "apple", 
           [2] -> "banana"
         }
}

所以我们有一个一维数组A,其中包含其他一维数组BC

列表也可以。你可以像嵌套数组一样嵌套它们。

ListA{     
      [0] -> ListB{ 
                   [0] -> "dog", 
                   [1] -> "cat", 
                   [2] -> "wolf"
             }
      [1] -> ListC{ 
                   [0] -> "carrot", 
                   [1] -> "apple", 
                   [2] -> "banana"
             }
}

所以我们可以有 List> 写成List&lt;List&lt;String&gt;

【讨论】:

    【解决方案2】:

    目前,你可以这样做

    Galg.add(things);
    

    但是,也许您需要ArrayList&lt;String[]&gt; 来代替?在这种情况下,您可以使用Arrays.asList

    ArrayList<String[]> Galg = new ArrayList<String[]>();
    Galg.addAll(Arrays.asList(things));
    

    【讨论】:

    • 我希望 Arraylist 和数组完全一样,你能给我举个例子吗?
    • 然后,使用第二个例子。您可以稍后将更多项目添加到列表中,例如使用Galg.add(new string[] { "a", "b", "c" });
    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 2013-10-05
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2013-07-29
    相关资源
    最近更新 更多