Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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中的2D LinkedList.contains()_Java_Linked List_2d_Contains - Fatal编程技术网

Java中的2D LinkedList.contains()

Java中的2D LinkedList.contains(),java,linked-list,2d,contains,Java,Linked List,2d,Contains,大家好。我是Java新手,我有如下2D LinkedList: public class Album { private String name; private String artist; public Album(String name, String artist) { this.name = name; this.artist = artist; } public String getName()

大家好。我是Java新手,我有如下2D LinkedList:

public class Album
{
    private String name;
    private String artist;

    public Album(String name, String artist)
    {
        this.name = name;
        this.artist = artist;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getArtist()
    {
        return artist;
    }

    public void setArtist(String artist)
    {
        this.artist = artist;
    }

    public boolean equals(Object o)
    {
        if (o instanceof Album)
        {
            Album that = (Album)o;
            return album.equals(that.album) && artist.equals(that.artist);
        }
        else
        {
            return false;
        }
    }

    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((album == null) ? 0 : album.hashCode());
        result = prime * result + ((artist == null) ? 0 : artist.hashCode());
        return result;
    }
}
LinkedList albums=新建LinkedList()

其中包含如下数据:

if(!artist.isEmpty()&&&!name.isEmpty()){
添加(新的LinkedList());
albums.getLast().add(artist.toString());
albums.getLast().add(name.toString());
}

但我想确保我的列表中没有重复的相册。当我的相册列表中已经包含同一对艺术家和姓名时,如何进行检查?

是的,评论家是对的。创建一个带有
artist
name
字段的类
Album
,并在其上实现
equals()
(和
hashCode()
)。然后您可以使用
contains()
查找重复项。或者甚至考虑使用<代码> SET/COD>(但是只有哈希代码在你的类中真正定义,因为一个集合是由哈希支持的)。

是的,评论员是正确的。创建一个带有
artist
name
字段的类
Album
,并在其上实现
equals()
(和
hashCode()
)。然后您可以使用
contains()
查找重复项。或者甚至考虑使用<代码> SET/COD>(但是,如果哈希代码在你的类上真正定义了,因为一个集合是由哈希支持的)。
public class Album
{
    private String name;
    private String artist;

    public Album(String name, String artist)
    {
        this.name = name;
        this.artist = artist;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getArtist()
    {
        return artist;
    }

    public void setArtist(String artist)
    {
        this.artist = artist;
    }

    public boolean equals(Object o)
    {
        if (o instanceof Album)
        {
            Album that = (Album)o;
            return album.equals(that.album) && artist.equals(that.artist);
        }
        else
        {
            return false;
        }
    }

    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((album == null) ? 0 : album.hashCode());
        result = prime * result + ((artist == null) ? 0 : artist.hashCode());
        return result;
    }
}

然后,您应该能够使用contains()检查相册是否已存在于链接列表中。

我的建议是创建一个名为album的新类,该类的外观如下:

public class Album
{
    private String name;
    private String artist;

    public Album(String name, String artist)
    {
        this.name = name;
        this.artist = artist;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getArtist()
    {
        return artist;
    }

    public void setArtist(String artist)
    {
        this.artist = artist;
    }

    public boolean equals(Object o)
    {
        if (o instanceof Album)
        {
            Album that = (Album)o;
            return album.equals(that.album) && artist.equals(that.artist);
        }
        else
        {
            return false;
        }
    }

    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((album == null) ? 0 : album.hashCode());
        result = prime * result + ((artist == null) ? 0 : artist.hashCode());
        return result;
    }
}

然后,您应该能够使用contains()检查相册是否已存在于链接列表中。

在这种情况下,我不确定您是否需要使用2d LinkedList。您可以创建一个具有两个属性的新类:Artist和Name,然后创建一个相册的链接列表。我不确定在这种情况下是否需要使用2d LinkedList。您可以创建一个具有两个属性的新类:艺术家和名称,然后创建一个相册的链接列表。使用contains()方法需要hash()吗?不在链接列表上(但如果要使用映射或集合,则必须有一个。只需对艺术家和名称字符串的哈希进行XOR即可)。方法的名称是
hashCode
。当您实现
equals
时,实现
hashCode
实际上是一个标准。严格地说,
hashCode
对于
contains
来说是不必要的。“严格地说,hashCode对于contains来说是不必要的。”同意。但是,任何未能保持hashcode和等于hashcode的人都应该受到绞刑、抽刑和四分五裂使用contains()方法需要hash()吗?不在链表上(但如果要使用映射或集合,则必须有一个映射或集合。只需对艺术家和名称字符串的hash进行异或运算即可)。方法的名称为
hashCode
。当您实现
equals
时,实现
hashCode
实际上是一个标准。严格地说,
hashCode
对于
contains
来说是不必要的。“严格地说,hashCode对于contains来说是不必要的。”同意。但是,任何未能保持hashcode和等于hashcode的人都应该受到绞刑、抽刑和四分五裂@阿德里安:谢谢,我不经常用Java编程。如果你在方法中添加@Override,编译器会警告你这些错误。谢谢大家,为此编写一个类是完全有意义的。我不太明白hashCode()是如何工作的,因为:)只是一个观察——对于这种类型的类,默认情况下不要使它们可变;我的意思是,如果不需要,就不要定义任何setter并将变量设置为final。这只是一个好习惯——不是法律或任何东西。@rukoche-the
hashcode()
方法覆盖只是将两个字段的hashcode值组合成一个值。它是必需的,因为类也重写了
对象。equals(Object)
hashcode
equals
必须一致。@Adrian:谢谢,我不经常用Java编程。如果你在方法中添加@Override,编译器会警告你这些错误。谢谢大家,为此编写一个类是完全有意义的。我不太明白hashCode()是如何工作的,因为:)只是一个观察——对于这种类型的类,默认情况下不要使它们可变;我的意思是,如果不需要,就不要定义任何setter并将变量设置为final。这只是一个好习惯——不是法律或任何东西。@rukoche-the
hashcode()
方法覆盖只是将两个字段的hashcode值组合成一个值。它是必需的,因为类也重写了
对象。equals(Object)
hashcode
equals
必须一致。