Может вы объясните следующее утверждение о коде:JAVA Коллекции с использованием итератора и равно против ==
Collection<String> stringCollection = new HashSet<String>();
stringCollection.add(new String ("bye"));
stringCollection.add(new String ("hi"));
stringCollection.add(new String ("bye again"));
for(Iterator<String> iter=stringCollection.iterator();
iter.hasNext();){
String str=iter.next();
if(str.equals("hi"))
iter.remove();
}
for (String str: stringCollection){
if(str.equals("hi"))
stringCollection.remove("hi");
}
System.out.println(stringCollection.size());
Если мы изменим порядок обеих петель, то код будет работать без ошибок и печати 2: Неверный есть ошибка времени выполнения, но почему это кажется правильным?
Есть 3 очень разные вопросы, заданные здесь. Можете ли вы сосредоточиться на одном? Тем не менее, обратитесь к http://stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re для a) и http://stackoverflow.com/questions/14150628/string- constant-pool-java для b) и http://stackoverflow.com/questions/16079931/java-lists-remove-method-works-only-for-second-last-object-inside-for -each-loo для c) – Tunaki
Tunaki: один вопрос: что происходит в этом конкретном коде, что порядок имеет значение и «равен»? – avivlevi