我有以下代码,它帮助我从列表中删除重复元素:
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);
}
然后我试图向前移动一点,并创建一个对象列表(例如书):
public static void main(String[] argv)
{
// Créer un objet ArrayList
List<Book> array_L = new ArrayList<Book>();
// Ajout des éléments avec doublon
Book b=new Book();
b.setName("Londre");
b.setSbn(123);
Book b2=new Book();
b2.setName("Paris");
b2.setSbn(1);
Book b3=new Book();
b3.setName("Londre");
b3.setSbn(123);
array_L.add(b);
array_L.add(b2);
array_L.add(b3);
System.out.println ("Contenu avec doublon: "+array_L);
// Créer une liste de contenu unique basée sur les éléments de ArrayList
Set<Book> mySet = new HashSet<Book>(array_L);
// Afficher le contenu de ArrayList
System.out.println("Contenu sans doublon: "+mySet);
}
书籍对象
public class Book {
String name;
int sbn;
//getters and setters
}
所以最后它会保留所有数据,包括重复数据
答案 0 :(得分:0)
您正在使用Set
来消除列表中的重复项。到目前为止,非常好。
问题是HashSet
的构造函数无法确定2 Book
是否相同。
让您的IDE在类equals
中生成方法hashCode
和Book
来修复此行为。
答案 1 :(得分:0)
在您的情况下,您正在添加不同的对象(未找到它们 在相同的内存位置,因为创建使用&#39; new&#39;关键字)。
所以,它远远地变得彼此独特,以解决它。
您需要按照以下方式装饰您的Book Class,
testmat * vec4(vertex, 0.0, 1.0);