Мне нужно проверить List
из Strings
на наличие определенных предопределенных строк и - в случае, если все эти предопределенные строки содержатся в списке - мне нужно записать список в файл.
В качестве первого подхода я подумал сделать что-то вроде
if(doesTheListContainPredefinedStrings(list))
writeListIntoFile(list);
, где doesTheListContainPredefinedStrings
и writeListIntoFile
выполняют циклы, чтобы проверить для PrefinedStrings и записать каждый элемент списка в файл, соответственно.
Но - поскольку в этом случае мне нужно беспокоиться о производительности - я хотел бы использовать тот факт, что в методе doesTheListContainPredefinedStrings
я по-прежнему оцениваю элементы списка один раз.
Iтакже подумал о чем-то вроде
String[] predefinedStrings = {...};
...
PrintWriter pw = new FileWriter("fileName");
int predefinedStringsFound = 0;
for (String string : list)
{
if (predefinedStrings.contains(string))
predefinedStringsFound++;
pw.println(string);
}
if (predefinedStringsFound == predefinedStrings.length)
pw.close();
Так как я заметил это - по крайней мере, в системе, где я разрабатываю (Ubuntu 19.04) - если я не закрываю поток, строки не записываются вфайл.Тем не менее, это решение кажется действительно плохим, и файл все равно будет создан, поэтому - если список не пройдет проверку - у меня возникнет проблема с его удалением (что требует другого доступа к хранилищу).
Кто-то может предложить мне лучший / лучший подход к этому и объяснить, почему он лучше / лучший для меня?