在java中的列表内的数组列表中对值进行分类

时间:2015-09-03 13:53:09

标签: java list arraylist

我正在尝试开发一个接收ArrayList列表的方法,并根据对象值对其中的数组列表进行分类。然后,包含对象的返回数组列表在其FirstChoice中具有1。

我的代码中的数据结构是

List有n个ArrayList,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;

    }

2 个答案:

答案 0 :(得分:1)

您的错误出现在这些行if (s.get(i).get(i).FirstChoice == 1) {scenario.add(s.get(i).get(i));上,因为您实际上并非用户内部列表d。 当我认为您希望i'th的{​​{1}}元素i'th时,您引用s i'th列表的d元素是来自d的列表。

s

答案 1 :(得分:1)

代码中的问题是当您循环遍历列表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;
}