Мой allWordsList
что-то вроде: [aaa, bbb, ccc, ddd, eee]
Как удалить список итерацию без ConcurrentModificationException
Как сделать копию (tempWordsList
) из allWordsList
в
for (String aWord : aWordsList)
без элемента итерации (т.е. для достижения [bbb, ccc, ddd, eee]
, то [aaa, ccc, ddd, eee]
, и т.д...)?
public class Anagrams {
List<String> allWordsList = new ArrayList<String>();
List<List<String>> myList = new ArrayList<List<String>>();
List<String> tempWordsList = new ArrayList<String>();
public Anagrams(String allWords) {
getWordsList(allWordsList, allWords); // getting List to copy here
getAnagramWordsList(allWordsList);
}
private void getAnagramWordsList(List<String> aWordsList) {
for (String aWord : aWordsList){
//tempWordsList.clear();
tempWordsList = aWordsList;
for (Iterator<String> iterator = tempWordsList.iterator(); iterator.hasNext();) {
String string = iterator.next();
if (string == aWord) {
// Remove the current element from the iterator and the list.
iterator.remove();
}
}
myList.add(tempWordsList);
System.out.println(aWordsList);
System.out.println(tempWordsList); //before error both lists are without first item...
}
}
}
Я прошел через пару подобных случаев, но до сих пор не понимаю его хорошо.
Вы можете изменить свой 'iterator' цикл в' for' цикла. Таким образом, вы можете удалить индекс, равный «aWord» –
. Вы должны использовать .equals() для строки, а не == –