2D LinkedList.contains () en Java
-
19-09-2019 - |
Question
Hé, tout le monde. Je suis nouveau à Java et je 2D LinkedList comme ceci:
LinkedList<LinkedList<String>> albums = new LinkedList<LinkedList<String>>();
Ce qui est rempli de données comme ceci:
if (!artist.isEmpty() && !name.isEmpty()) { albums.add(new LinkedList<String>()); albums.getLast().add(artist.toString()); albums.getLast().add(name.toString()); }
Mais je veux vous assurer que ma liste n'a pas d'albums en double. Comment vérifier chaque fois que mon albums contient déjà même paire de artiste et nom
La solution
Ma suggestion serait de créer une nouvelle classe, appelée album qui ressemble à ceci:
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;
}
}
Ensuite, vous devriez pouvoir utiliser contains () pour vérifier si oui ou non l'album existe déjà dans la liste chaînée.
Autres conseils
Oui, commentateur a raison. Créer une Album
de classe avec des champs de artist
et name
et mettre en œuvre equals()
(et hashCode()
) sur eux. Et vous pouvez utiliser contains()
pour trouver le double. Ou même envisager d'utiliser un Set
(mais seulement si le code de hachage est vraiment défini votre classe, car un ensemble est soutenu par un hachage).