How can I change the code so that it prints out like the way I want it to be printed out? I want the userNameGenerator to be printed out first, with an arrow (->) in front of it, and the personName to be displayed with open and close square brackets ([]) beside it. I also want to remove the commas at the end. I've done a bit of it already as you can see below:
Code that needs changing:
Set<String> newStrSet = new HashSet<>();
for(int i = 0; i < personFile.size(); i++) {
String[] regionSplit = personFile.get(i).getUserNameGenerator().split(", ");
for(int j = 0; j < regionSplit.length; j++) {
newStrSet.add(regionSplit[j]);
}
}
for (String p: newStrSet) {
System.out.printf("%s -> [", p);
for (Codes2 s: personFile) {
if (s.getUserNameGenerator().contains(p)) {
System.out.printf("%s, ", s.getPersonName());
}
}
System.out.println("]");
}
Full code:
import java.util.*;
import java.io.*;
public class Codes {
public static void main(String[] args) {
List<Codes2> personFile = new ArrayList<>();
try {
BufferedReader br = new BufferedReader(new FileReader("person-data.txt"));
String fileRead = br.readLine();
while (fileRead != null) {
String[] personData = fileRead.split(":");
String personName = personData[0];
String userNameGenerator = personData[1];
Codes2 personObj = new Codes2(personName, userNameGenerator);
personFile.add(personObj);
fileRead = br.readLine();
}
br.close();
}
catch (FileNotFoundException ex) {
System.out.println("File not found!");
}
Set<String> newStrSet = new HashSet<>();
for(int i = 0; i < personFile.size(); i++) {
String[] regionSplit = personFile.get(i).getUserNameGenerator().split(", ");
for(int j = 0; j < regionSplit.length; j++) {
newStrSet.add(regionSplit[j]);
}
}
for (String p: newStrSet) {
System.out.printf("%s -> [", p);
for (Codes2 s: personFile) {
if (s.getUserNameGenerator().contains(p)) {
System.out.printf("%s, ", s.getPersonName());
}
}
System.out.println("]");
}
}
Java Class:
public class Codes2 implements Comparable<Codes2> {
private String personName;
private String userNameGenerator;
public Codes2(String personName, String userNameGenerator) {
this.personName = personName;
this.userNameGenerator = userNameGenerator;
}
public String getPersonName() {
return personName;
}
public String getUserNameGenerator() {
return userNameGenerator;
}
@Override
public int compareTo(Codes2 o) {
return getUserNameGenerator().compareTo(o.getUserNameGenerator());
}
public int compare(Object lOCR1, Object lOCR2) {
return ((Codes2)lOCR1).userNameGenerator
.compareTo(((Codes2)lOCR2).userNameGenerator);
}
}
Output:
Dompteuse -> [Imran Sullivan, ]
Deservedness -> [Eadie Jefferson, ]
Ostracize -> [Eadie Jefferson, ]
Abattoir -> [Angel Whitehouse, ]
Choreography -> [Imran Sullivan, Taylor Vargas, Priya Oliver, ]
How I want the output to look like:
Dompteuse -> [Imran Sullivan]
Deservedness -> [Eadie Jefferson]
Ostracize -> [Eadie Jefferson]
Abattoir -> [Angel Whitehouse]
Choreography -> [Imran Sullivan, Taylor Vargas, Priya Oliver]