复制对象,java列表
我有以下代码,它帮助我从列表中删除重复的元素:复制对象,java列表,java,list,hashset,Java,List,Hashset,我有以下代码,它帮助我从列表中删除重复的元素: public static void main(String[] argv) { // Créer un objet ArrayList List<String> array_L = new ArrayList(); // Ajout des éléments avec doublon array_L.add("Londre"); array_L.add("Paris"); array_L.add("New York"); arr
public static void main(String[] argv)
{
// Créer un objet ArrayList
List<String> array_L = new ArrayList();
// Ajout des éléments avec doublon
array_L.add("Londre");
array_L.add("Paris");
array_L.add("New York");
array_L.add("Londre");
array_L.add("Paris");
array_L.add("Londre");
System.out.println ("Contenu avec doublon: "+array_L);
// Créer une liste de contenu unique basée sur les éléments de ArrayList
Set<String> mySet = new HashSet<String>(array_L);
// Créer une Nouvelle ArrayList à partir de Set
List<String> array_L2 = new ArrayList<String>(mySet);
// Afficher le contenu de ArrayList
System.out.println("Contenu sans doublon: "+mySet);
}
因此,最后它会保留所有数据,包括重复的数据。您正在使用
集合从列表中删除重复的数据。到目前为止,一切顺利
问题是HashSet
的构造函数无法确定两个Book
s是否相同
让IDE在类Book
中生成方法equals
和hashCode
,以修复此行为
在本例中,您添加的是不同的对象(不在
由于使用“new”关键字创建,因此位于同一内存位置。)
到目前为止,它变得独一无二,然后彼此修复它
你需要按照以下方式装饰你的图书课
class Book {
private String name;
private int sbn;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSbn() {
return sbn;
}
public void setSbn(int sbn) {
this.sbn = sbn;
}
@Override
public int hashCode() {
return this.getSbn();
}
@Override
public boolean equals(Object obj) {
Book b1 = (Book) obj;
if (b1.getName().equals(this.getName())) {
return true;
}
return false;
}
}
您需要将hashCode()和equals()方法重写到类书中。为了使它唯一(减少重复)。我认为您应该重写equals
方法。所以List
可以检测到它是重复的谢谢你,它现在已经在控制之中了
public class Book {
String name;
int sbn;
//getters and setters
}
class Book {
private String name;
private int sbn;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSbn() {
return sbn;
}
public void setSbn(int sbn) {
this.sbn = sbn;
}
@Override
public int hashCode() {
return this.getSbn();
}
@Override
public boolean equals(Object obj) {
Book b1 = (Book) obj;
if (b1.getName().equals(this.getName())) {
return true;
}
return false;
}
}