在java列表中列出数组列表中的值

问题描述:

我想开发一种方法,它接收ArrayList的列表并根据对象值对列表中的数组列表进行分类。然后,包含这些对象的返回数组列表在其FirstChoice中有1个。在java列表中列出数组列表中的值

在我的代码的数据结构是

列表具有的ArrayList n个,该ArrayList有24个对象。每个对象都有3个元素,而FirstChoice就是其中的一个元素。

我的代码的问题是输出不如我所期望的,它似乎只是坚持一个值,并重复它的整个列表。你可以请帮我解决这个问题

ArrayList<HH> TestMethods(List<ArrayList<HH>> s) { 
     ArrayList<HH> scenario = new ArrayList<HH>(); 
     for (ArrayList<HH> d : s) { 
      for (int i = 0; i < d.size(); i++) { 
       if (s.get(i).get(i).FirstChoice == 1) { 

        scenario.add(s.get(i).get(i)); 
       } 
      } 
     } 

     return scenario; 

    } 
+5

's.get(ⅰ)通过''D'替换。你也可以为'd'值做另一个foreach循环。 – Tunaki

你的错误是在这些线路if (s.get(i).get(i).FirstChoice == 1) {scenario.add(s.get(i).get(i));你是不是真正的用户内部列表d。 你引用的si'th列表的i'th元素,当我想你想的di'th元素,其中ds列表。

ArrayList<HH> TestMethods(List<ArrayList<HH>> s) { 
    ArrayList<HH> scenario = new ArrayList<HH>(); 
    for (ArrayList<HH> d : s) { 
     for (int i = 0; i < d.size(); i++) { 

      int item = d.get(i).FirstChoice; 

      if (item == 1) { 

       scenario.add(item); 
      } 
     } 
    } 

    return scenario; 

} 
+1

这不会编译:'d.get(i).FirstChoice'可能是给定OP代码的一个整数,而不是'HH'。 – Tunaki

+1

你说得对,我已经更新了我的答案以反映这一点,并且添加了更详尽的解释。 – McNultyyy

在你的代码的问题是,当你遍历列表s,你实际上从来没有使用当前的元素d

在你的代码的一些其他意见:

  • 不想返回List而不是ArrayList的。
  • 根据Java的命名约定命名方法和变量(testMethods,而不是TestMethodsfirstChoice代替FirstChoice
  • 是你写循环的方式一致:使用的foreach或索引,但保持相同的风格。
List<HH> testMethods(List<ArrayList<HH>> s) { 
    List<HH> scenario = new ArrayList<HH>(); 
    for (ArrayList<HH> d : s) { 
     for (HH hh : d) { 
      if (hh.firstChoice == 1) { 
       scenario.add(hh); 
      } 
     } 
    } 
    return scenario; 
}