import java.util.ArrayList;
public class TSTER {
public static void main(String[] args) {
ArrayList<Integer> test = new ArrayList<Integer>(7);
test.add(1);
test.add(1);
test.add(1);
test.add(1);
test.add(1);
test.add(1);
test.add(1);
for(int d:test)
{
System.out.println(d);
int x = test.indexOf(d);
System.out.println(x);
}
System.out.println(test.size());
}
}
输出为10,依此类推。大小i 7,但似乎每次我打印索引0
答案 0 :(得分:1)
indexOf
使用Object#equals()
来比较对象。装箱1
的结果使用Integer.valueOf(1)
,它会为您装箱的所有其他整数返回一个equal
的整数。
此外,一些实现维护整数缓存,这意味着可以将相同的实例整数插入到列表中。
在这种情况下,该方法可正确执行。如果您不想要此行为,请使用计数器变量或不与其他对象进行比较的对象。
答案 1 :(得分:1)
indexOf
返回给定元素第一次出现的索引。
由于所有元素都相等,因此始终返回第一个索引0
。
答案 2 :(得分:0)
列表中的所有数字都相同。这就是为什么indexOf总是返回第一个元素的索引(因为它等于所有其他元素)。
答案 3 :(得分:0)