如何检查java中vector中的用户自定义条目?

Ale*_*nea 1 java contains vector comparable

我有一个条目矢量.每个条目都是此类的一个实例:

public class Entry implements Comparable<Entry>{

    private String _key;
    private CustomSet _value;

    [...]

    @Override
    public int compareTo(Entry a) {
        return this._key.compareTo(a._key);
    }
}
Run Code Online (Sandbox Code Playgroud)

向量声明如下:

Vector<Entry> entries = new Vector<Entry>();
Run Code Online (Sandbox Code Playgroud)

之后,填充向量.然后我想检查某个键是否在向量中的某个位置.所以我这样做:

Entry sample = new Entry(key, new CustomSet());
if (entries.contains(sample)) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.为什么?我怎样才能让它发挥作用?

PS CustomSet是另一个用户定义的类,与我的观点无关

Fri*_*itz 5

你必须重新定义equals你的Entry类中的方法,因为这是contains依赖于确定元素是否属于集合的内容,正如文档所说:

如果此向量包含指定的元素,则返回true.更正式地,当且仅当此向量包含至少一个元素e时才返回true(o == null?e == null:o.equals(e)).

在这种情况下ocontain方法参数.