CSC 202 Computer Science II Priority Queue Lab Write a Java class called Game to
ID: 3729108 • Letter: C
Question
Explanation / Answer
CoDE:
// StringComparator.java
import java.util.Comparator;
public class StringComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
// Lab5.java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Scanner;
public class Lab5 {
static void sortGames(File inFile,File outFile,SortBy sortBy){
PriorityQueue queue;
if(sortBy==SortBy.NAME){
queue=new PriorityQueue<String,Game>(new StringComparator());
}else if(sortBy==SortBy.CONSOLE){
queue=new PriorityQueue<String, Game>(new StringComparator());
}else{
queue=new PriorityQueue<Date, Game>(new DateComparator());
}
try {
Scanner scanner=new Scanner(inFile);
while(scanner.hasNext()){
String line=scanner.nextLine();
String fields[]=line.split(";");
String name=fields[0];
long timeStamp=Long.parseLong(fields[1]);
Date date=new Date(timeStamp);
String console=fields[2];
Game game=new Game(name, date, console);
PQEntry entry = null;
switch (sortBy) {
case NAME:
entry=new PQEntry<String, Game>(name, game);
break;
case CONSOLE:
entry=new PQEntry<String, Game>(console, game);
break;
case DATE:
entry=new PQEntry<Date, Game>(date, game);
default:
break;
}
queue.insert(entry);
}
PrintWriter writer=new PrintWriter(outFile);
while(!queue.isEmpty()){
Game g=(Game) queue.remove().getValue();
System.out.println(g);
writer.append(g+" ");
}
writer.close();
System.out.println(" Output has been written to the output file!");
} catch (FileNotFoundException e) {
System.out.println("Input file not found!");
}catch (Exception e) {
System.out.println("File corrupted");
}
}
public static void main(String[] args) {
File inFile=new File("games.txt");
File outFile=new File("output.txt");
sortGames(inFile, outFile, SortBy.NAME);
}
}
//Game.java class
import java.util.Date;
public class Game {
private String name;
private String console;
private Date date;
public Game(String name, Date date, String console) {
this.name = name;
this.date = date;
this.console = console;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getConsole() {
return console;
}
public void setConsole(String console) {
this.console = console;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return name + ";" + date.getTime() + ";" + console;
}
}
// DateComparator.java
import java.util.Comparator;
import java.util.Date;
public class DateComparator implements Comparator<Date>{
@Override
public int compare(Date d1, Date d2) {
if(d1.before(d2)){
return 1;
}else {
return -1;
}
}
}
//games.txt
Final Fantasy XI: Rise of the Zilart;1073000981498;PS2
GTA V;1073009981345;XBox
Far Cry 4;1083089982343;PS2
The Division;1283089912449;XBox
Walking Dead;1063089082340;PS4
//output.txt
Far Cry 4;1083089982343;PS2
Final Fantasy XI: Rise of the Zilart;1073000981498;PS2
GTA V;1073009981345;XBox
The Division;1283089912449;XBox
Walking Dead;1063089082340;PS4