package wspp; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; public class Wspp { public static void main(String[] args) { if (args.length != 2) { System.err.println("Usage: java Wspp inputFile outputFile"); return; } String inputFile = args[0]; String outputFile = args[1]; try { WordScanner scanner = new WordScanner(inputFile); Map wordMap = new LinkedHashMap<>(); int wordPosition = 1; while (scanner.hasNextWord()) { String word = scanner.nextWord(); if (wordMap.containsKey(word)) { WordInfo info = wordMap.get(word); info.count++; info.positions.add(wordPosition); } else { WordInfo info = new WordInfo(); info.count = 1; info.positions = new IntList(); info.positions.add(wordPosition); wordMap.put(word, info); } wordPosition++; } scanner.close(); PrintWriter writer = new PrintWriter( new OutputStreamWriter( new FileOutputStream(outputFile), StandardCharsets.UTF_8)); for (Map.Entry entry : wordMap.entrySet()) { String word = entry.getKey(); WordInfo info = entry.getValue(); writer.print(word + " " + info.count); for (int i = 0; i < info.positions.size(); i++) { writer.print(" " + info.positions.get(i)); } writer.println(); } writer.close(); } catch (IOException e) { System.err.println("Error: " + e.getMessage()); } } }