我有一个ArrayList<String>,我想从中删除重复的字符串.我怎样才能做到这一点?
假设我创建了一个对象并将其添加到我的对象中ArrayList.如果我然后使用完全相同的构造函数输入创建另一个对象,那么该contains()方法是否会将两个对象评估为相同?假设构造函数对输入没有做任何有趣的事情,并且存储在两个对象中的变量是相同的.
ArrayList<Thing> basket = new ArrayList<Thing>();
Thing thing = new Thing(100);
basket.add(thing);
Thing another = new Thing(100);
basket.contains(another); // true or false?
Run Code Online (Sandbox Code Playgroud)
class Thing {
public int value;
public Thing (int x) {
value = x;
}
equals (Thing x) {
if (x.value == value) return true;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这是class应该如何实现contains()回归true?
在Java中,Set不能包含两个唯一的对象,因为List没有该限制。集合中用于标识唯一对象的机制是什么?最有可能是equals方法或hashCode方法的实现,或正在添加的两个对象的实现。有谁知道识别唯一对象的实际机制是什么?是equals方法,hashcode方法还是这两种方法或其他方法?