我正在尝试开发一个接收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;
}
答案 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
。testMethods
而不是TestMethods
,firstChoice
而不是FirstChoice
)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;
}