ArrayList indexOf

时间:2014-05-27 04:46:26

标签: java arraylist indexof

我刚开始学习Java中的ArrayList类。我在下面的代码中测试了ArrayList类及其方法:

import java.util.ArrayList;

public class NewArrayList {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> myList = new ArrayList<String>();

        String s = new String();
        myList.add(s);
        String b = new String();
        myList.add(b);

        int theSize = myList.size();
        System.out.println("ArrayList size: " + theSize);

        boolean isTrue = myList.contains(s);
        System.out.println(isTrue);

        int whereIsIt = myList.indexOf(s);
        System.out.println(whereIsIt);
        int whereIsIt2 = myList.indexOf(b);
        System.out.println(whereIsIt2);

    }

}

indexOf方法显示了对象的索引。因此,我向s ArrayList对象引用添加了两个对象bmyList,它应该在索引中有2个对象。 whereIsitwhereIsit2的输出均为0。不应该是0 1 ??

3 个答案:

答案 0 :(得分:10)

您正在向列表中添加两个具有相同值(空字符串)的String个对象。

所以你的清单看起来像

["", ""]

然后您调用等效的indexOf(""),其中indexOf(..)使用Object#equals(Object)方法来比较对象。列表中的第一个元素等于"",因此返回索引。


旁注:

请记住,Java是通过价值传递的。变量并不重要。它是重要的参考价值。

答案 1 :(得分:0)

在使用http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ArrayList.html

之前,请先阅读文档中的方法说明
int     indexOf(Object o)
Returns the index of the first occurrence of the specified element in this list, or -1   if    this list does not contain the element.  

public int lastIndexOf(Object o)

Returns the index of the last occurrence of the specified element in this list, or -1 if this list does not contain the element. More formally, returns the highest index i such that (o==null ? get(i)==null : o.equals(get(i))), or -1 if there is no such index.

答案 2 :(得分:0)

在这里,您只需创建两个没有值的对象,因此它将被视为空字符串。所以Indexof将返回给定对象的第一次出现。

如果为s和b分配不同的值,那么结果会得到你期望的结果。请尝试使用以下代码。

    String s = "String1";
    myList.add(s);
    String b = "String2";
    myList.add(b);

    int whereIsIt = myList.indexOf(s);
    System.out.println(whereIsIt);
    int whereIsIt2 = myList.indexOf(b);
    System.out.println(whereIsIt2);