【发布时间】:2016-02-29 13:59:53
【问题描述】:
我有以下代码,它可以帮助我从列表中删除重复的元素:
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
}
所以最后它会保留所有数据,包括重复的数据
【问题讨论】:
-
您需要将 hashCode() 和 equals() 方法覆盖到 Book 类中。使其独一无二(减少重复)。
-
我认为你应该重写
equals方法。所以List可以检测到它是重复的 -
非常感谢,现在一切都在掌控之中