Я хочу, чтобы моя программа считывала входные данные по одной строке за раз и записывала каждую строку на выход, если это не дубликат какой-либо предыдущей строки ввода. А также, что файл с большим количеством повторяющихся строк не использует больше памяти, чем требуется для количества уникальных строк.Как указать строковые элементы в определенном порядке длины заказа?
Повторяющиеся строки должны быть напечатаны одинаковое количество раз, когда они происходят на входе я сделал половину вопроса, но все же он не работает должным образом ..
public class Part1 {
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
Set<String> s = new HashSet<String>();
String inpt;
int n = 0;
while ((inpt = r.readLine()) != null) {
s.add(inpt);
n++;
}
Iterator<String> i = s.iterator();
while (i.hasNext()) {
w.println(i.next());
}
}
public static void main(String[] args) {
try {
BufferedReader r;
PrintWriter w;
if (args.length == 0) {
r = new BufferedReader(new InputStreamReader(System.in));
w = new PrintWriter(System.out);
} else if (args.length == 1) {
r = new BufferedReader(new FileReader(args[0]));
w = new PrintWriter(System.out);
} else {
r = new BufferedReader(new FileReader(args[0]));
w = new PrintWriter(new FileWriter(args[1]));
}
long start = System.nanoTime();
doIt(r, w);
w.flush();
long stop = System.nanoTime();
System.out.println("Execution time: " + 10e-9 * (stop-start));
} catch (IOException e) {
System.err.println(e);
System.exit(-1);
}
}
}
}
Что вы имеете в виду, когда говорите «это не работает должным образом». Что на самом деле происходит не так? –
Одним из наиболее важных шагов в решении проблемы является определение того, как представлять информацию, которую ваша программа должна отслеживать. В частности, какие структуры данных (обычно объекты) вы хотите использовать для этого. Ваше использование HashSet позволит вам отслеживать каждую строку, которую читает ваша программа, и проверять наличие дубликатов. Однако это не дает вам способ «запомнить», сколько раз вы видели эту строку. Кроме того, набор не представляет собой определенный «порядок» элементов, которые он хранит. – user1445967
Вы можете сохранить свои строки в качестве ключей и числа появления любой строки (частоты) в качестве значения для этой конкретной клавиши. –