ex) 입력 예시
Set
백종원 돼지고기 김치찌개 만들기
돼지고기는 핏물을 빼주세요.
잘익은 김치 한포기를 꺼내서 잘라주세요.
냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.
다진마늘 한스푼, 설탕 한스푼 넣어주세요.
종이컵으로 물 8컵 부어서 센불에 끓여주세요.
핏물 뺀 돼지고기를 넣어주세요.
된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.
간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.
중불로 줄여서 오래 끓여주세요~!!
마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^
끝
ex) 예시 출력
[ Set 으로 저장된 백종원 돼지고기 김치찌개 만들기 ]
1. 돼지고기는 핏물을 빼주세요.
2. 잘익은 김치 한포기를 꺼내서 잘라주세요.
3. 냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.
4. 다진마늘 한스푼, 설탕 한스푼 넣어주세요.
5. 종이컵으로 물 8컵 부어서 센불에 끓여주세요.
6. 핏물 뺀 돼지고기를 넣어주세요.
7. 된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.
8. 간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.
9. 중불로 줄여서 오래 끓여주세요~!!
10. 마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^
import java.util.*;
class relist {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String CollectionName = sc.nextLine();
String title = sc.nextLine();
switch(CollectionName) {
제일 먼저 자료구조명(CollectionName)을 입력하도록 한다.
또한 한번만 입력하는 제목도 함께 입력받는다.
컬렉션마다 처리 방법이 다르므로 switch문으로 CollectionName을 참조해 구분한다.
case "List" :
ArrayList<String> strList = new ArrayList<>();
while (true){
String text = sc.nextLine();
if (Objects.equals(text,"끝")) {
break;
}
strList.add(text);
}
title = "[ List로 저장된 "+title+" ]";
System.out.println(title);
for(int i = 0; i < strList.size(); i++){
System.out.println(i+1 +". "+strList.get(i));
}
break;
입력된 문자열이 "끝"이라면 입력을 종료하고, 아닌 경우 add()메서드로 문자열을 리스트에 저장하며 반복한다.
ArrayList 타입의 길이를 조회할때는 size() 메서드를 사용한다.
저장된 값을 참조할 때에는 리스트이름.get(참조할 순번) 형태로 한다.
case "Set" :
LinkedHashSet<String> strSet = new LinkedHashSet<>();
while (true) {
String text = sc.nextLine();
if (Objects.equals(text, "끝")) {
break;
}
strSet.add(text);
}
title = "[ Set으로 저장된 " + title + " ]";
System.out.println(title);
Iterator iterator = strSet.iterator();
for (int i = 0; i < strSet.size(); i++) {
int number = i + 1;
System.out.println(number + ". " + iterator.next());
}
break;
set 타입은 저장된 값의 순서가 없기 때문에 Iterator를 이용해야 한다.
List와 같은 방법으로 입력받고 iterator를 사용해 참조한다.
iterator는 직접 값을 가져올 수 없는 Set 컬렉션에 사용할 수 있고, 다른 컬렉션프레임워크에서도 값을 쉽게 참조할 수 있게 한다.
case "Map" :
Map<Integer, String> strMap = new HashMap<>();
int lineNum = 1;
while (true){
String text = sc.nextLine();
if (Objects.equals(text,"끝")) {
break;
}
strMap.put(lineNum++,text);
}
title = " [ Map으로 지정된 "+title+" ]";
System.out.println(title);
for(int i = 0; i < strMap.size(); i++) {
System.out.println(i+1 +". "+ strMap.get(i+1));
}
break;
Map 타입은 key와 value의 두가지 값을 필요로 한다.
입력과정에서 lineNum 변수를 설정해 1씩 증가시켜 key값으로 저장하였다.
반복계수(i)의 증감을 이용해 for문으로 쉽게 참조할 수 있었다.
전체코드
import java.util.*;
class relist {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String CollectionName = sc.nextLine();
String title = sc.nextLine();
switch(CollectionName) {
case "List" :
ArrayList<String> strList = new ArrayList<>();
while (true){
String text = sc.nextLine();
if (Objects.equals(text,"끝")) {
break;
}
strList.add(text);
}
title = "[ List로 저장된 "+title+" ]";
System.out.println(title);
for(int i = 0; i < strList.size(); i++){
System.out.println(i+1 +". "+strList.get(i));
}
break;
case "Set" :
LinkedHashSet<String> strSet = new LinkedHashSet<>();
while (true) {
String text = sc.nextLine();
if (Objects.equals(text, "끝")) {
break;
}
strSet.add(text);
}
title = "[ Set으로 저장된 " + title + " ]";
System.out.println(title);
Iterator iterator = strSet.iterator();
for (int i = 0; i < strSet.size(); i++) {
int number = i + 1;
System.out.println(number + ". " + iterator.next());
}
break;
case "Map" :
Map<Integer, String> strMap = new HashMap<>();
int lineNum = 1;
while (true){
String text = sc.nextLine();
if (Objects.equals(text,"끝")) {
break;
}
strMap.put(lineNum++,text);
}
title = " [ Map으로 지정된 "+title+" ]";
System.out.println(title);
for(int i = 0; i < strMap.size(); i++) {
System.out.println(i+1 +". "+ strMap.get(i+1));
}
break;
default :
System.out.println("저장할 수 없는 자료구조 입니다.");
}
}
}
실행 결과
Set
백종원 돼지고기 김치찌개 만들기
잘익은 김치 한포기를 꺼내서 잘라주세요.
핏물 뺀 돼지고기를 넣어주세요.
중불로 줄여서 오래 끓여주세요~!!
끝
[ Set 으로 저장된 백종원 돼지고기 김치찌개 만들기 ]
1. 잘익은 김치 한포기를 꺼내서 잘라주세요.
2. 핏물 뺀 돼지고기를 넣어주세요.
3. 중불로 줄여서 오래 끓여주세요~!!