I'm having trouble adding both string and int values to an arraylist. I'm reading in data from a tsv file, [String String String int] format. It works fine when all tokens are Strings, but I need to have the int to do some calculations later on.
When I try to use an int value it doesn't work. Should I try to add the int to the arraylist or parse afterwards?
Thanks for any help!
public class PlaycountData {
//declare variables
public String userID;
public String artistID;
public String artistName;
public int playcount;
public PlaycountData(String userID, String artistID, String artistName, int playcount){
this.userID = userID;
this.artistID= artistID;
this.artistName= artistName;
this.playcount= playcount;
} // end constructor
public PlaycountData(String[] rep) {
this.userID = rep[0];
this.artistID = rep[1];
this.artistName = rep[2];
//this.playcount = rep[3];
}
// getter methods
public String getUserID(){
return userID;
}
public String getArtistID(){
return artistID;
}
public String getArtistName(){
return artistName;
}
public int getPlaycount(){
return playcount;
}
// setter methods
public void setUserID(String userID){
this.userID = userID;
}
public void setArtistID(String artistID){
this.artistID = artistID;
}
public void setArtistName(String artistName){
this.artistName = artistName;
}
public void setPlaycount(int playcount){
this.playcount = playcount;
}
@Override
public String toString(){
return userID + artistID + artistName + playcount;
}
}
public class LastFm {
static ArrayList<PlaycountData> playcountRecords;
public static void main(String [ ] args) throws IOException{
playcountRecords = new ArrayList<PlaycountData>(); // create a new arraylist of type PlaycountData
String fileName = "C:\\Users\\Siân\\Desktop\\sample2.tsv";
BufferedReader br = new BufferedReader(new FileReader(fileName)); // allows us to read contents of file
String line;
try{
while((line = br.readLine()) != null ){ // keep reading if there are more lines in the file
String[] rep = line.split("\t"); // enter the split line into an array
PlaycountData playrep = new PlaycountData(rep); // create new PlaycountData object
playcountRecords.add(playrep); // add array to arraylist
} }catch(IOException e){
System.err.println("An error has occurred" + e);
System.exit(-1);
} finally{
if(br != null)
br.close(); // close the stream
}
for(PlaycountData pr: playcountRecords){
System.out.println(pr.getUserID() + " " + pr.getArtistID() + " " + pr.getArtistName()
+ " " + pr.getPlaycount());
} // outputs all the data
int[] plays = new int[playcountRecords.size()]; // create an int array to hold the playcounts
for(PlaycountData pr2: playcountRecords){
System.out.println(pr2.getPlaycount());
}