package week02.collection;
import java.util.*;
public class Col1 {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<String>();
Set<String> set = new LinkedHashSet<String>();
Map<Integer, String> map = new LinkedHashMap<>();
Scanner sc = new Scanner(System.in);
String dataStructure = sc.nextLine();
String title = sc.nextLine();
int idx = 1;
int mapIdx = 1;
switch (dataStructure) {
case "List":
while(true){
String recipe = sc.nextLine();
if (recipe.equals("끝")){
break;
}
arrayList.add(recipe);
}
System.out.println("[" + dataStructure + "로 저장된 " + title + "]");
for (String i : arrayList) {
System.out.println(idx + ". " + i);
idx++;
}
break;
case "Set":
while(true){
String recipe = sc.nextLine();
if (recipe.equals("끝")){
break;
}
set.add(recipe);
}
System.out.println("[" + dataStructure + "로 저장된 " + title + "]");
for (String i : set) {
System.out.println(idx + ". " + i);
idx++;
}
break;
case "Map":
while(true){
String recipe = sc.nextLine();
if (recipe.equals("끝")){
break;
}
map.put(mapIdx++, recipe);
}
System.out.println("[" + dataStructure + "로 저장된 " + title + "]");
for (String i : map.values()) {
System.out.println(idx + ". " + i);
idx++;
}
break;
}
}
}
각각의 자료구조에 순서가 보장되어 있어야 하는 것 같아서 LinkedHashSet, LinkedHashMap을 사용했다.
Iterator
set과 같은 인덱스가 없는 자료구조에서 순환하기 위해서 사용
혹은 향상된 for문에서 할 수 없는 컬랙션의 수정이나 삭제를 하기 위해서 사용
- for-each문으로 자료구조를 돌다가 값을 수정, 삭제해야 해서 수정, 삭제를 수행 -> ConcurrentModificationException이 발생
public class IteratorExample {
public static void main(String[] args) {
// ArrayList 생성 및 초기화
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.add("Banana");
System.out.println("원본 리스트: " + list);
// Iterator 생성
Iterator<String> iterator = list.iterator();
// 순회하면서 "Banana" 제거
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("Banana")) {
iterator.remove(); // 안전하게 요소 제거
}
}
System.out.println("Banana 제거 후 리스트: " + list);
}
}
public class Main
{
public static void main(String[] args)
{
// 컬렉션 생성
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
System.out.println("while문 지나기 전 리스트에 들어있던 값 : " + list);
//'+' 붙이기
ListIterator<String> listIterator = list.listIterator();
while(listIterator.hasNext())
{
Object element = listIterator.next();
listIterator.set(element + "+");
}
System.out.println("while문 지난 후 수정된 결과 : " + list);
}
}
public class ListIteratorExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.add("Date");
// ListIterator를 끝에서 시작
ListIterator<String> iterator = list.listIterator(list.size());
System.out.println("역방향 조회:");
while (iterator.hasPrevious()) { // 이전 요소가 있을 때까지
String element = iterator.previous(); // 이전 요소 가져오기
System.out.println(element);
}
}
}
'JAVA' 카테고리의 다른 글
다형성을 이용한 계산기 만들기 - 예외처리 추가 (0) | 2025.01.07 |
---|---|
다형성을 이용한 계산기 만들기 (0) | 2025.01.06 |
Array / List / Stack / Queue / Set / Map (0) | 2025.01.02 |
자바 기본 문법 / 얕은 복사와 깊은 복사 / String (0) | 2025.01.02 |
요리 레시피 메모장 만들기 / 배열, 입출력, 형변환 (0) | 2025.01.02 |