
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
질문 내용
1주차 레시피 리팩토링 하는 과제 하고 있습니다.
set 구현 중 아래 문장 위치에 따라 정상 작동하고 오류가 발생합니다.(위치 //1,//2)
1번 주석을 활성화하면 자료 다 입력 후 끝에서 오류가 발생하면서 입력된 값을 출력해주지 않고, 2번은 정상적으로 종료됩니다.
Iterator<String> Iterator = SetStr.iterator;
전체 화면 캡처
보고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.

작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
import java.util.*;
public class Week2Test {
public static void main(String[] args) {
// 자료구조 요리 레시피 메모장 만들기 (1주차 자료 리팩토링)
// 입력값
// 저장할 자료구조명을 입력합니다. (List / Set / Map) v
// 내가 좋아하는 요리 제목을 먼저 입력합니다. v
// 이어서 내가 좋아하는 요리 레시피를 한문장씩 입력합니다. v
// 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다. v
// 출력값
// 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
// 이어서, 입력한 모든 문장앞에 번호를 붙여서 입력 순서에 맞게 모두 출력 해줍니다.
Scanner scanner = new Scanner(System.in); //화면으로 입력 설정
boolean EndSign = false; //끝 입력시 종료값으로 사용
int num = 1; //레시피 앞 순번 변수
String title; //요리 제목
System.out.println("사용 할 자료구조를 입력해주세요");
String col = scanner.nextLine(); //collection 입력
// System.out.println("요리 제목을 입력해주세요.");
// String title = scanner.nextLine(); //요리 제목 입력
switch (col) {
case "list":
ArrayList<String> ListStr = new ArrayList<String>(); //list 타입 사용
System.out.println("요리 제목을 입력해주세요.");
title = scanner.nextLine();
ListStr.add("[ List로 저장된 " + title + " ]");
System.out.println("레시피를 한 줄 씩 입력해주세요.");
while (!EndSign) {
String RecipeList = scanner.nextLine();
if (RecipeList.equals("끝")) {
EndSign = true;
break;
} else {
ListStr.add(num + ". " + RecipeList);
num++;
}
}
for (int print = 0; print < ListStr.size(); print++) { //끝 입력된뒤 입력된 사용한 collection, 제목, 내용 한줄씩 출력
System.out.println(ListStr.get(print));
}
break;
case "set":
// Set<String> SetStr = new HashSet<String>(); //LinkedHashSet은 순서를 보장하고 HashSet은 순서를 보장하지 않음...
LinkedHashSet<String> SetStr = new LinkedHashSet<String>();
//1. Iterator<String> Iterator = SetStr.iterator();
System.out.println("요리 제목을 입력해주세요.");
title = scanner.nextLine();
SetStr.add("[ Set으로 저장된 " + title + " ]");
System.out.println("레시피를 한 줄 씩 입력해주세요.");
while (!EndSign) {
String RecipeSet = scanner.nextLine();
if (RecipeSet.equals("끝")) {
EndSign = true;
break;
} else {
SetStr.add(num + ". " + RecipeSet);
num++;
}
}
//2. Iterator<String> Iterator = SetStr.iterator();
for (int print = 0; print < SetStr.size(); print++) {
System.out.println(Iterator.next());
}
break;
// case "map":
// Map<Integer, String> Map = new HashMap<Integer, String>(); //map 타입 사용
// System.out.println("요리 제목을 입력해주세요.");
// title = scanner.nextLine(); //요리 제목 입력
// Map.add("[ Map으로 저장된 " + title + " ]");
default:
System.out.println("사용 할 수 없는 자료구조 입니다.");
}
}
}
[에러메세지]
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:756)
at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:778)
at Week2Test.main(Week2Test.java:69)
