我有一个Vector对象,其String元素的内容各不相同,Vector对象的大小约为10,000个元素。因此,我不是像疯子那样循环,而是考虑使用indexOf来获得第一次出现。为简单起见:
String curNode = "0";
Vector<String> stringVec = "1", "2", "3", "0", "1", "0", "1";
基于Vector API here,如果我执行以下操作:
int firstOccur = stringVec.indexOf(curNode);
是否可以保证给我firstOccur=3
?
另外,我不太确定String是否是一个不可变对象,或者equals
方法的任何违反都会在这里发挥作用。
答案 0 :(得分:1)
返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回-1。更正式地,返回最低索引i,使得(o == null?get(i)== null:o.equals(get(i))),如果没有这样的索引,则返回-1。
直接来自api。 .indexOf
将确保Vector
中的对象的第一个实例返回,如果-1
中找不到该对象,则Vector
将返回.equals()
。据我所知,索引在对象上调用==
,而不是Strings
运算符。因此,{{1}}不应该存在违规行为。