Java - 如何获取数组中给定元素的索引

时间:2014-07-31 19:36:08

标签: java arrays indexing

我有一系列的联系方式:

public class Application {

private Scanner input;
private Contact[] contacts;
private int ArrayNum;

public Application() {
    input = new Scanner(System.in);
    contacts = new Contact[5];
    ArrayNum = 0;

}

我想要做的是在联系人列表中输入某人的姓名,如果他们在列表中找到,则返回他们的索引,如下所示:

System.out.println("Who do you want to remove?");

            String name = input.nextLine();

            for(Contact c: contacts){
                if(c.getName().equals(name)){

                    //Get the index here
                }
            }

我试过研究这个,但没有答案或指导似乎非常明确,所以我希望有人可以为我解释。

感谢您寻找

5 个答案:

答案 0 :(得分:2)

for(int index = 0; index < contacts.length; index++) {
    if(contacts[index].getName().equals(name)) {
        // use the index here
    }
}

我认为此代码段不需要任何进一步的解释。

答案 1 :(得分:1)

使用使用计数器的for循环。

for(int i = 0; i < contacts.length, i++) {
    if(contacts[i].getName().equals(name)) {
        // do something with the index, i
    }
}

答案 2 :(得分:0)

您可以使用计数器

System.out.println(&#34;你想删除谁?&#34;);

        String name = input.nextLine();
        int remove_index = -1;
        for(int i=0; i<contacts.length; i++){
            Contact c = contacts[i];
            if(c.getName().equals(name)){
                remove_index =i;
            }
        }

答案 3 :(得分:0)

另一种可能有用的替代方法是使用ArrayList<Contact>而不是c风格的数组(Contact[])。这个类可能会增加更多的处理复杂性,但它包含了许多有用的额外方法,包括int indexOf(<T> object),其中<T>是您在声明中指定的类型(即Contact ArrayList<Contact> contacts)。

答案 4 :(得分:-2)

糟糕的主意!如果你有阵列,你不能认真对待。当然,您可以将索引设置为null,但是您必须搜索空条目以引用阵列中的新联系人。 注意:编写时有一个迭代器

for(Contact c: contacts){...

所以一个选项是按索引进行迭代,但这是一个糟糕的选择。最好使你的阵列成为一个集合。然后你可以写:

for (Iterator<Contact> iter = mySet.iterator();iter.hasNext();) {
    final Contact next = iter.next();
    if(next.getName() == "NAME") {
         iter.remove();
         break;
    }

始终使用Iterator.remove()!否则你会比你想要的更早得到例外:D