【问题标题】:How to iterate through 2d array to split the inner array in java如何遍历二维数组以在java中拆分内部数组
【发布时间】:2016-08-17 23:14:57
【问题描述】:

我有以下二维数组:

[[Reflux Symptom Sensitivity Index (Impedance)], [Symptom       Acid    Nonacid All Reflux], [Regurgitate       34% 71% 36%], [Stomach pain     21% 14% 19%], [Chest pain       3%  0%  3%], [], [Reflux Symptom Association Probability (Impedance)]]

我想将除第一个数组之外的所有内部数组都使用空格,以便最终得到:

[[Reflux Symptom Sensitivity Index (Impedance)], [Symptom,Acid, Nonacid, All, Reflux], [Symptom,Acid, Nonacid, All, Reflux], [Symptom,Acid, Nonacid, All, Reflux],[Chest pain,3%,0%,3%]]

我可以写如下代码:

ArrayList<List<String>> Arr_RSI_table2d = new ArrayList<List<String>>();
List<String> stats = Arr_RSI_table2d.get(1);
                // remove() returns the object that was removed
                String allStats = stats.remove(0);
                String allStats2=allStats.trim();
                Collections.addAll(stats, allStats2.split("\\s"));
                List<String> Arr_RSI_table2d_col2 = Arr_RSI_table2d.get(2);
                // remove() returns the object that was removed
                String All_Arr_RSI_table2d_col2 = Arr_RSI_table2d_col2.remove(0);
                String All_Arr_RSI_table2d_col2_2=allStats.trim();
                Collections.addAll(Arr_RSI_table2d_col2, All_Arr_RSI_table2d_col2_2.split("\\s"));

                List<String> Arr_RSI_table2d_col3 = Arr_RSI_table2d.get(3);
                // remove() returns the object that was removed
                String All_Arr_RSI_table2d_col3 = Arr_RSI_table2d_col3.remove(0);
                String All_Arr_RSI_table2d_col3_2=allStats.trim();
                Collections.addAll(Arr_RSI_table2d_col3, All_Arr_RSI_table2d_col3_2.split("\\s"));

                List<String> Arr_RSI_table2d_col4 = Arr_RSI_table2d.get(4);
                // remove() returns the object that was removed
                String All_Arr_RSI_table2d_col4 = Arr_RSI_table2d_col4.remove(0);
                String All_Arr_RSI_table2d_col4_2=allStats.trim();
                Collections.addAll(Arr_RSI_table2d_col4, All_Arr_RSI_table2d_col4_2.split("\\s"));

我该怎么做?

【问题讨论】:

  • 投反对票的原因是?...

标签: java arraylist multidimensional-array


【解决方案1】:

你可以试试这样的;

for (int i = 1; i < myArray.size(); i++) {
 String[] innerArray = myArray.get(i);
 for (int j = 0; j < innerArray.length; j++) {
  innerArray[j] = removeWhiteSpace(innerArray[j]);
 }
}

您将需要一个辅助方法来删除空格:

private String removeWhiteSpace(String toTrim) {
 String toRet = "";
 String trimSplit[] = toTrim.split(" ");
 for (String word : trimSplit) {
  if (!word.trim().isEmpty()) {
   toRet = toRet + word + " ";
  }
 }
 return toRet.trim();
}

这是未经测试的,但应该可以正常工作。告诉我进展如何。

【讨论】:

  • 虽然外部数组是一个 ArrayList。抱歉 - 编辑代码以显示此
  • @SebastianZeki 没问题 - 请稍等,我会编辑。
  • @SebastianZeki 你去 - 编辑它以说明外部是一个数组列表。让我知道它是否有效。
【解决方案2】:
 ArrayList<List<String>>  myList = new ArrayList();
    void loopThroghArray() {

        for (List<String> list : myList) {
                //outer loop


            for (String string : list) {
                //inner loop
            }

        }

    }

很难理解您的代码,因为您甚至没有给出数组的类型,所以我在这里做了一个关于循环二维数组的示例。我使用增强的 for 循环来循环第一个数组和另一个增强的 for 循环来迭代第二个数组,您可以在第二个 for 循环内进行拆分。你可能想试试这个。

【讨论】:

  • 谢谢。我已经修改了代码。结构是 ArrayList> 如何从外循环中排除第一个元素
猜你喜欢
  • 2013-03-14
  • 1970-01-01
  • 2011-07-18
  • 2016-09-04
  • 2011-07-24
相关资源
最近更新 更多