为什么indexOf没有按预期工作?

时间:2014-10-05 08:36:57

标签: java list

enter image description here 我有labels这是String的列表,等于[0,1]。但是,以下行返回-1,而我希望它返回1。知道什么可能是错的或遗失? 定义:
maxLabel是一个初始设置为-1的整数。     公共列表标签;

意外结果发生时,maxLabel等于1:

int maxLabelIndex=labels.indexOf(maxLabel);

1 个答案:

答案 0 :(得分:1)

indexOf返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。更正式地,返回最低索引i,使得(o == null?get(i)== null

在你的情况下,元素"1"的索引是1,这就是为什么你会得到1. 但是如果你要通过int maxLabel = 1;注意到maxLabel是声明为类型int然后你会得到-1因为字符串集合不包含Integer类型的对象。

基本上,indexOf方法采用类型o的参数Object。每当您传递不同的对象类型时(例如,您声明List类型为String并且您正在检查不同的类型,例如Integer,Double,int,long, etc.),您可以期望得到-1