G
Guest
Gast
Hallo wollte ein paar Songs (Titel) ausgeben, erst so wie sie in der Liste stehen, dann Alphabetisch und dann nochmal ohne Duplikate. Problem mit einem TreeSet geht es d.h. keine Duplikate mit einem HashSet nicht, verstehe aber nicht warum, einer von euch? Es sollten doch beides mal die Duplikate eleminiert werden oder? :-(
Vielen Dank!
Jukebox6.java
Song.java
SongListMore2.txt
Ausgaben:
HashSet:
[Ping Moon, Somersault, Shiva Moon, Circles, Deep Channel, Passenger, Listen, Li
sten, Listen, Circles]
[Circles, Circles, Deep Channel, Listen, Listen, Listen, Passenger, Ping Moon, S
hiva Moon, Somersault]
[Listen, Shiva Moon, Ping Moon, Passenger, Circles, Deep Channel, Circles, Somer
sault, Listen, Listen]
TreeSet:
[Ping Moon, Somersault, Shiva Moon, Circles, Deep Channel, Passenger, Listen, Li
sten, Listen, Circles]
[Circles, Circles, Deep Channel, Listen, Listen, Listen, Passenger, Ping Moon, S
hiva Moon, Somersault]
[Circles, Deep Channel, Listen, Passenger, Ping Moon, Shiva Moon, Somersault]
Vielen Dank!
Jukebox6.java
Code:
import java.util.*;
import java.io.*;
public class Jukebox6{
ArrayList<Song> songList = new ArrayList<Song>();
public static void main(String[] args){
new Jukebox6().go();
}
class ArtistCompare implements Comparator<Song>{
public int compare(Song one, Song two){
return one.getArtist().compareTo(two.getArtist());
}
}
public void go(){
getSongs();
System.out.println(songList);
Collections.sort(songList);
System.out.println(songList);
HashSet<Song> songSet = new HashSet<Song>(); //oder TreeSet?
songSet.addAll(songList);
System.out.println(songSet);
}
void getSongs(){
try{
File file= new File("SongListMore2.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line= reader.readLine())!=null){
addSong(line);
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
void addSong(String lineToParse){
String[] tokens = lineToParse.split("/");
Song nextSong = new Song(tokens[0], tokens[1], tokens[2], tokens[3]);
songList.add(nextSong);
}
}
Song.java
Code:
class Song implements Comparable<Song>{
String title;
String artist;
String rating;
String bpm;
public boolean equals(Object aSong){
Song s=(Song) aSong;
return getTitle().equals(s.getTitle());
}
public int hashcode(){
return title.hashCode();
}
public int compareTo(Song s){
return title.compareTo(s.getTitle());
}
Song(String t,String a,String r,String b){
title=t;
artist=a;
rating=r;
bpm=b;
}
public String getTitle(){
return title;
}
public String getArtist(){
return artist;
}
public String getRating(){
return rating;
}
public String getBpm(){
return bpm;
}
public String toString(){
return title;
}
/*
public String toString(){
return title+" "+artist;
}
*/
}
SongListMore2.txt
Ping Moon/Nick Dranke/5/80
Somersault/Zero 7/4/84
Shiva Moon/Prem Joshua/6/84
Circles/BT/5/100
Deep Channel/Afro Celts/4/120
Passenger/Headmix/4/100
Listen/Tahiti 80/5/90
Listen/Tahiti 80/5/90
Listen/Tahiti 80/5/90
Circles/BT/5/100
Ausgaben:
HashSet:
[Ping Moon, Somersault, Shiva Moon, Circles, Deep Channel, Passenger, Listen, Li
sten, Listen, Circles]
[Circles, Circles, Deep Channel, Listen, Listen, Listen, Passenger, Ping Moon, S
hiva Moon, Somersault]
[Listen, Shiva Moon, Ping Moon, Passenger, Circles, Deep Channel, Circles, Somer
sault, Listen, Listen]
TreeSet:
[Ping Moon, Somersault, Shiva Moon, Circles, Deep Channel, Passenger, Listen, Li
sten, Listen, Circles]
[Circles, Circles, Deep Channel, Listen, Listen, Listen, Passenger, Ping Moon, S
hiva Moon, Somersault]
[Circles, Deep Channel, Listen, Passenger, Ping Moon, Shiva Moon, Somersault]