【问题标题】:Clarity needed for indexOf method for Vector class javaVector类java的indexOf方法需要清晰
【发布时间】:2014-06-24 15:25:15
【问题描述】:

我有一个 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 方法的行为在这里起作用。

【问题讨论】:

  • 2 件事——indexOf() 无论如何都会循环播放,只是隐藏起来,现在使用ArrayList 而不是Vector 通常是一个更好的主意。

标签: java api vector controls


【解决方案1】:

返回此向量中指定元素第一次出现的索引,如果此向量不包含该元素,则返回 -1。更正式地说,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i,如果没有这样的索引,则返回 -1。

那是直接来自 api。 .indexOf 将保证在Vector 中返回对象的第一个实例,如果在Vector 中找不到对象,则返回-1。据我所知,索引调用对象上的.equals(),而不是== 运算符。因此,Strings 是不可变的,应该没有违规行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多