我有一个嵌套的for循环。它有效,有点。它只将第一个if语句读为true。在此之后,它忽略了所有可能的真实陈述。
for(int i = 0; i < inGroups.length; i++)
{
for(int g = 0; g < theGroups.length; g++)
{
if( inGroups[i].equals(theGroups[g]) )
{
gLV.setItemChecked(g, true);
}
}
}
答案 0 :(得分:1)
您的代码看起来很好。正如@Hot Licks所提到的,您应该使用调试器和/或添加打印语句来查看正在发生的事情。
关于您的代码的一般评论:
Group
对象或数组中的任何内容具有implemented an equals
method,否则它将始终为假。setItemChecked
可以处理多个值吗?如果set被调用两次,它只会覆盖以前的值吗?您的代码效率非常低(O(N ^ 2))。您可以考虑执行以下操作,即O(N)。如果阵列当然很小也没关系。如果您使用此方法,则需要implement hashCode()
and equals()
methods。
Set<Group> inGroupsSet = new HashSet<Group>();
// load inGroups into a set
for (Group group : inGroups)
inGroupsSet.add(group);
// look up each Group in theGroups in the set
for (int g = 0; g < theGroups.length; g++)
if (inGroupsSet.contains(theGroups[g]))
gLV.setItemChecked(g, true);
希望这里有所帮助。