while (input.ready()) {
list.add(input.readLine());
}
input.close();
Pattern pattern = Pattern.compile("\\d{1,8}");
switch (args[0]) {
case "-u":
int id = Integer.parseInt(args[1]);
for (String s : list) {
Matcher matcher = pattern.matcher(s.substring(0, 8));
matcher.find();
int listId = Integer.parseInt(matcher.group());
if (id == listId) {
int index = list.indexOf(s);
String newLine = String.format("%-8d%-30.30s%-8.8s%-4.4s", id, args[2], args[3], args[4]);
list.set(index, newLine);
break;
}
}
break;
case "-d":
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String product = iter.next();
if (product.startsWith(args[1]))
iter.remove();
}
break;
}
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (String s : list) {
System.out.println(s);
writer.write(s);
writer.newLine();
}
writer.close();
}
}
1)почему решение с ArrayList тут в коментах называют топорным, какие еще есть более грамотные тогда решения?
2) почему если убрать writer.close файл не записывается?
3)Почему обязательно удаление из листа должно происходить через iterator.
4)можно сделать что бы после удаления инкременция не нарушалась, как?
на сколько данное решение не оптимальное ? что можно изменить доработать?
Зарание спасибо!Александр
3 уровень
Вопросы по данному решению
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
31 января 2019, 19:42
А ты поток записи закрыл?
0
АлександрExpert
31 января 2019, 19:44
Стала записываться только после того как закрыл, ранее в других задачах, я забывал очень часто его закрыть но запись была по-моему
0