【问题标题】:How can I convert a Two D string array to One D string array? [duplicate]如何将二维字符串数组转换为一维字符串数组? [复制]
【发布时间】:2018-11-02 03:57:19
【问题描述】:

我有一个二维字符串数组:

String myTwoD[][] = {{"Apple", "Banana"}, {"Pork", "Beef"}, {"red", 
"green","blue","yellow"}};

如何在 JAVA 中将其转换为一维字符串数组,如下所示:

OneD[]={"Apple", "Banana","Pork", "Beef","red", "green","blue","yellow"};

ArrayUtils 可以用来做这个吗?

这是我的数组的代码,我正在尝试将多页表列中的所有值存储到数组中进行排序

for (i=0;i<pagecount; i++)
  {
  for (j=0;j<columncount;j++)
   {
    array[i][j]= t.getcolumnname().get(j).getText();
   }
  }

【问题讨论】:

  • Arrays.stream(myTwoD).flatMap(Arrays::stream).toArray(String[]::new)

标签: java arrays string


【解决方案1】:

我发现最简单的方法是使用流。

String myTwoD[][] = { { "Apple", "Banana" }, { "Pork", "Beef" }, { "red", "green", "blue", "yellow" } };
List<String[]> list = Arrays.asList(myTwoD);

list.stream().flatMap(num -> Stream.of(num)).forEach(System.out::println);

将结果存储到一维数组中。这样做:

String arr[] = list.stream().flatMap(num -> Stream.of(num)).toArray(String[]::new);

for (String s : arr) {
   System.out.println("Array is = " + s);
}

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点,一种方法是首先将二维数组的内容存储到一个列表中,然后使用它将元素存储到新的一维数组中。

    在代码中它看起来像这样:

    //arr being your old array
    
        ArrayList<String> list = new ArrayList<String>();
    
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {  
                list.add(arr[i][j]); 
            }
        }
    
        // now you need to add it to new array
    
    
        String[] newArray = new String[list.size()];
        for (int i = 0; i < newArray.length; i++) {
            newArray[i] = list.get(i);
        }
    

    【讨论】:

    • 我试过但没有用。这适用于字符串吗? @PradyumanDixit
    • @SUPARNASOMAN 尝试更新的代码
    • 它现在在数组中显示空值@PradyumanDixit
    • 哪个数组显示空值? newArray 必须具有您之前的数组的值。
    • 您能否立即显示您为此使用的确切代码,因为此代码现在并且应该可以正常工作。我可以查看您的代码并判断可能出了什么问题。
    【解决方案3】:

    试试这个。

    String myTwoD[][] = {{"Apple", "Banana"}, {"Pork", "Beef"},{"red", "green","blue","yellow"}};
    
        List<String> lt = new ArrayList<String>();
    
        for (String[] oneDArray : myTwoD) { //loop throug rows only
            lt.addAll(Arrays.asList(oneDArray));
        }
    
        String[] oneDArray =(String[])lt.toArray(new String[0]); //conversion of list to array      
        System.out.println(Arrays.toString(oneDArray)); //code for printing array
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2021-01-28
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      相关资源
      最近更新 更多