【问题标题】:classify the values inside array list inside list in java对java中列表内的数组列表内的值进行分类
【发布时间】:2015-09-03 13:53:08
【问题描述】:

我正在尝试开发一种接收 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;

    }

【问题讨论】:

  • s.get(i) 替换为d。您还可以为 d 值执行另一个 foreach 循环。

标签: java list arraylist


【解决方案1】:

您的代码中的问题是,当您遍历列表 s 时,实际上您从未使用过当前元素 d

您的代码中的其他一些 cmets:

  • 宁愿返回 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;
}

【讨论】:

    【解决方案2】:

    您的错误在if (s.get(i).get(i).FirstChoice == 1) {scenario.add(s.get(i).get(i)); 这几行,因为您实际上不是用户内部列表d。 你正在引用si'th 列表的i'th 元素,而我认为你想要di'th 元素,其中d 是来自s 的列表。

    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;
    
    }
    

    【讨论】:

    • 这不会编译:d.get(i).FirstChoice 可能是一个 int 给定 OP 的代码,而不是 HH
    • 你说得对,我已经更新了我的答案以反映这一点,并添加了更详尽的解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2021-05-05
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 2015-04-07
    相关资源
    最近更新 更多