내가 본 다른 예외 시나리오와 달리 루프가 일 때 에서 계속 발생하는 예외는 다음과 같이 설명합니다. // 여기가 잘못되어 //. 그리고 내 구현에서는 List partialR
이 반복되는 동안 변경되지 않으므로 혼란 스럽습니다.고급 for 루프에서 java.util.ConcurrentModificationException이 발생하는 이유는 무엇입니까?
public class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<Integer>());
return permute(nums, 0, result);
}
public List<List<Integer>> permute(int[] nums, int i, List<List<Integer>> result){
if (i == nums.length){
return result;
}
int num = nums[i];
List<List<Integer>> partialR = permute(nums, i+1, result);
System.out.println("partialR"+partialR);
for (List<Integer> t : partialR){***//where it goes wrong//***
System.out.println("t"+t);
for (int j=0; j <= t.size(); j++){
System.out.println("j="+j);
List<Integer> subs = insert(t,num,j);
result.add(subs);
System.out.println("result"+result);
}
}
System.out.println("result");
return result;
}
public List<Integer> insert(List<Integer> t, int num, int j){
List<Integer> temp = new ArrayList<>();
if (j == 0){
temp.add(num);
temp.addAll(t);
System.out.println("temp"+temp);
return temp;
}else if(j == t.size()){
temp.addAll(t);
temp.add(num);
return temp;
}
List<Integer> temp1 = new ArrayList<Integer> (t.subList(j,t.size()-1));
List<Integer> temp2 = new ArrayList<Integer> (t.subList(0,j-1));
temp.addAll(temp1);
temp.add(num);
temp.addAll(temp2);
return temp;
}
}
* 그리고 내 구현이 목록 partialR이 변경되지 않습니다 *. 그렇게 보일지도 모르지만'partialR'은'result'와 같은 목록을 참조합니다. 이것은 분명히 수정 중입니다. – shmosel