Java索引 - 数组和对象


package javaapplication10arraylistandobjects;
import java.util.ArrayList;
import java.util.Scanner;
public class JavaApplication10Arraylistandobjects {
    static Scanner user_input = new Scanner(System.in);
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        ArrayList<mainclass> me = new ArrayList<>();
        mainclass ob = new mainclass();
        System.out.println("name");
        ob.name = user_input.nextLine();
        me.add(new mainclass());
        // int index = me.indexOf(ob);
        System.out.println("new position" + me.indexOf(ob));
    }
}

package javaapplication10arraylistandobjects;
import java.util.Objects;
public class mainclass {
    String name;
    public mainclass(String name) {
        this.name = name;
    }
    public mainclass() {
    }
    @Override
    public String toString() {
        return name;
    }
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 83 * hash + Objects.hashCode(this.name);
        return hash;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final mainclass other = (mainclass) obj;
        if (!Objects.equals(this.name, other.name)) {
            return false;
        }
        return true;
    }
}

===输出=====跑步:姓名乔尼新位置1

建立成功(总时间:2秒(

当我试图找到索引时,它显示了我" -1"。我发现了一些类似的主题,有同样的问题,它说我有为了覆盖Equals((和HashCode((,我已经看到了这一点,但仍然存在相同的问题。有人可以解释或向我展示如何正确。thx

看来您永远不会在主类中添加ob

尝试更改

 me.add(new mainclass());

to

 me.add(ob);

最新更新