У меня есть простой вопрос относительно структур данных в Java. , если у меня есть метод в Java, который возвращает структуру данных что-то вроде этогоЗапрос на некоторую настройку производительности
private List<String> getResults() {
List<String> data = new ArrayList<String>();
data.add("One");
data.add("Two");
data.add("three");
data.add("Four");
return data;
}
и я хочу, чтобы перебрать этот список непосредственно в результате из метода, как это
void iterate() {
for (String value : getResults())
System.out.println(value);
}
Будет ли это означает, что для каждого напечатанного значения метод getResults() всегда вызывается или просто кэшируется где-то в памяти и всегда ссылается в этом контексте в противоположность этому.
void iterate() {
List<String> results = getResults();
for (String value : results)
System.out.println(value);
}
Просто расширение знаний base.Thanx
Значит ли это, что Итератор хранит ссылку на исходный результат? –
Olu
@OluDoug В этом цикле создан один итератор, созданный на основе исходного списка, возвращаемого 'getResults()' в начале цикла. Однако, если переименованный List изменен внутри цикла, будет выбрано ConcurrentModificationException. – Eran
Huhh ... не видел это один приход .. Thanx – Olu