我有
labels
这是String
的列表,等于[0,1]
。但是,以下行返回-1
,而我希望它返回1
。知道什么可能是错的或遗失?
定义:
maxLabel是一个初始设置为-1的整数。
公共列表标签;
意外结果发生时,maxLabel
等于1:
int maxLabelIndex=labels.indexOf(maxLabel);
答案 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