본문 바로가기
코딩테스트(JAVA)

[코딩테스트] 자바의 주요 컬렉션과 문자열 클래스 정리

by goblin- 2025. 1. 30.

1. String & StringBuilder (문자열 조작)

 

String (불변)

 

String은 불변(immutable)하기 때문에 문자열을 변경하면 새로운 객체가 생성됩니다.

 

1) 문자열 추가

String str = "Hello";
str = str + " World";  // 새로운 객체 생성
System.out.println(str); // Hello World

 

2) 문자열 변경

String str = "Hello";
str = str.replace("H", "J"); // 새로운 객체 생성
System.out.println(str); // Jello

 

3) 문자열 삭제

String str = "Hello";
str = str.replace("l", ""); // "l"을 제거한 새로운 문자열 생성
System.out.println(str); // Heo

 

StringBuilder (가변)

 

StringBuilder는 가변(mutable) 객체이므로 같은 객체 내에서 값을 수정할 수 있습니다. 따라서 문자열을 여러번 변경시켜야할 경우 StringBuilder를 사용해야 효율적으로 동작할 수 있습니다.

 

1) 문자열 추가 (append())

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // Hello World

 

2) 문자열 삽입 (insert())

StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " Beautiful");
System.out.println(sb); // Hello Beautiful

 

3) 문자열 삭제 (delete())

StringBuilder sb = new StringBuilder("Hello World");
sb.delete(5, 11);  // " World" 삭제
System.out.println(sb); // Hello

 

4) 문자열 변경 (setCharAt())

StringBuilder sb = new StringBuilder("Hello");
sb.setCharAt(0, 'J'); // 첫 번째 문자를 J로 변경
System.out.println(sb); // Jello

 

 

2. List (순서 O, 중복 O, 인덱스 기반)

 

List는 요소를 추가, 수정, 삭제할 수 있는 기능을 제공합니다.

 

1) 값 추가 (add())

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

System.out.println(list); // [Java, Python, C++]

add(value): 맨 뒤에 추가

add(index, value): 특정 위치에 추가

list.add(1, "C#"); // 1번 인덱스에 C# 추가
System.out.println(list); // [Java, C#, Python, C++]

 

2) 값 변경 (set())

list.set(1, "Kotlin"); // 1번 인덱스 값을 Kotlin으로 변경
System.out.println(list); // [Java, Kotlin, Python, C++]

 

3) 값 삭제 (remove())

list.remove(2); // 2번 인덱스 제거
System.out.println(list); // [Java, Kotlin, C++]

list.remove("Kotlin"); // 값으로 제거
System.out.println(list); // [Java, C++]

 

 

 

3. Queue (FIFO, 선입선출)

 

Queue는 먼저 들어온 데이터가 먼저 나가는 구조입니다.

 

1) 값 추가 (offer() / add())

Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
queue.offer("C");

System.out.println(queue); // [A, B, C]

 

2) 값 제거 (poll() / remove())

System.out.println(queue.poll()); // A (가장 먼저 들어간 요소 제거)
System.out.println(queue); // [B, C]

 

3) 첫 번째 요소 확인 (peek())

System.out.println(queue.peek()); // B (제거되지 않음)
System.out.println(queue); // [B, C]

 

5. HashMap (Key-Value 저장)

 

HashMap은 Key-Value 쌍을 저장하고, 키를 기준으로 값을 조작할 수 있습니다.

 

1) 값 추가 (put())

Map<String, Integer> map = new HashMap<>();
map.put("Java", 90);
map.put("Python", 95);
map.put("C++", 85);

System.out.println(map); // {Java=90, Python=95, C++=85}

 

2) 값 변경 (put())

map.put("Java", 100); // 기존 값 변경
System.out.println(map); // {Java=100, Python=95, C++=85}

 

3) 값 삭제 (remove())

map.remove("C++"); // 키 삭제
System.out.println(map); // {Java=100, Python=95}

 

4) 특정 키 존재 여부 (containsKey())

System.out.println(map.containsKey("Java")); // true
System.out.println(map.containsKey("C++")); // false

 

5) 특정 값 존재 여부 (containsValue())

System.out.println(map.containsValue(95)); // true
System.out.println(map.containsValue(85)); // false

 

6) 모든 키 조회 (keySet())

System.out.println(map.keySet()); // [Java, Python]

 

7) 모든 값 조회 (values())

System.out.println(map.values()); // [100, 95]