在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;
}
答
你的错误是在这些线路if (s.get(i).get(i).FirstChoice == 1) {
和scenario.add(s.get(i).get(i));
你是不是真正的用户内部列表d
。 你引用的s
的i'th
列表的i'th
元素,当我想你想的d
的i'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;
}
答
在你的代码的问题是,当你遍历列表s
,你实际上从来没有使用当前的元素d
。
在你的代码的一些其他意见:
- 不想返回
List
而不是ArrayList
的。 - 根据Java的命名约定命名方法和变量(
testMethods
,而不是TestMethods
,firstChoice
代替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;
}
's.get(ⅰ)通过''D'替换。你也可以为'd'值做另一个foreach循环。 – Tunaki