Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制对象,java列表_Java_List_Hashset - Fatal编程技术网

复制对象,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;
    }

}