| 타입 | 길이 구하는 방법 | 예시 |
|---|---|---|
배열 (int[], char[][], 등) | .length | arr.length |
문자열 (String) | .length() 메서드 | str.length() |
🔹 grid가 char[][] 타입인 경우
grid[nxt_x][nxt_y] == '1' // ✔️ char 리터럴은 작은 따옴표!
grid가 String[][] 타입인 경우
grid[nxt_x][nxt_y].equals("1") // ✔️ 문자열은 equals로 비교!
import java.util.Arrays;
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
🔸 출력 결과:
[1, 2, 3]
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(matrix));
→ 출력: [[1, 2], [3, 4]]
import java.util.LinkedList;
import java.util.Queue;
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[]{0, 0});
| 메서드 | 설명 | 예시 |
|---|---|---|
add() / offer() | 큐에 원소 추가 | queue.add(5) |
poll() | 큐 맨 앞 원소 꺼내고 제거 | int val = queue.poll() |
peek() | 큐 맨 앞 원소 보기 (제거 ❌) | `i |
Map<Integer, Boolean> map = new HashMap<>();
K = Key 타입 (Integer)V = Value 타입 (Boolean)Map은 인터페이스, HashMap은 구현체put())map.put(3, true); // Key: 3, Value: true
get())Boolean value = map.get(3); // → true
null 반환containsKey())if (map.containsKey(3)) {
// key가 존재할 때 처리
}
keySet())for (Integer key : map.keySet()) {
System.out.println(key + " -> " + map.get(key));
}
entrySet())for (Map.Entry<Integer, Boolean> entry : map.entrySet()) {
System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
}
map.put(3, false); // 기존 key에 새 값 할당 (덮어쓰기)
remove())map.remove(3); // key=3 삭제
| 메서드 | 설명 |
|---|---|
put(key, value) | 값 추가 또는 덮어쓰기 |
get(key) | key로 value 조회 (null 가능) |
containsKey(key) | key 존재 여부 확인 |
remove(key) | 해당 key 삭제 |
keySet() | key만 모은 Set<K> 반환 |
entrySet() | 전체 key-value 쌍 반복에 사용 |
String.valueOf()는 int 같은 기본형(primitive type)을 문자열(String)으로 변환할 때 사용하는 메서드
int number = 123;
String str = String.valueOf(number);
System.out.println(str); // 출력: "123"
문자열을 효율적으로 이어붙이는 클래스입니다.
+ 연산보다 빠르며, 반복적인 문자열 연결에 유리합니다.
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb); // 출력: Hello World
sb.append(123); // 숫자 추가 → "Hello World123"
sb.append(true); // boolean 추가
sb.append('!'); // 문자 추가
문자열의 내용을 비교할 때 사용합니다.
자바에서 == 연산자는 주소(참조)를 비교하기 때문에 문자열 비교엔 적절하지 않습니다.
String a = "hello";
String b = "hello";
String c = new String("hello");
System.out.println(a == b); // true (같은 리터럴)
System.out.println(a == c); // false (주소 다름)
System.out.println(a.equals(c)); // ✅ true (내용 같음)
문자열의 일부분을 잘라서 반환합니다.
start: 포함 end: 미포함String s = "abcdef";
System.out.println(s.substring(0, 3)); // "abc"
System.out.println(s.substring(2, 5)); // "cde"
System.out.println(s.substring(3)); // "def"
| 메서드 | 설명 | 예시 |
|---|---|---|
StringBuilder.append() | 문자열 효율적 이어붙이기 | sb.append("abc"); |
String.equals() | 문자열 내용 비교 | "abc".equals("abc") |
String.substring(a, b) | 부분 문자열 추출 (a 이상 b 미만) | "abcdef".substring(1, 4) → "bcd" |
✍️ Tip: 문자열을 반복적으로 연결할 때는 StringBuilder,
내용 비교는 equals(),
부분 추출은 substring()을 쓰는 것이 자바의 정석입니다.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1); // 요소 추가
list.add(2);
list.add(3);
System.out.println(list); // [1, 2, 3]
list.remove(1); // 인덱스 1 제거 → [1, 3]
list.set(0, 10); // 인덱스 0의 값 변경 → [10, 3]
System.out.println(list.get(1)); // 3
System.out.println(list.size()); // 크기 확인 → 2
}
}
1.배열 정렬
1) 오름차순 정렬
Array.sort(arr);
String[] arr = {"banana", "apple", "cherry"};
Arrays.sort(arr); // 오름차순 정렬
System.out.println(Arrays.toString(arr)); // [apple, banana, cherry]
2) 내림차순 정렬
Array.sort(arr,Collections.reverseOrder());
2.리스트 정렬
1) 오름차순 정렬
Collections.sort(list);
List<String> list = new ArrayList<>(List.of("banana", "apple", "cherry"));
Collections.sort(list); // 오름차순 정렬
System.out.println(list); // [apple, banana, cherry]
2) 내림차순 정렬
Collections.sort(list,Collections.reverseOrder());
String.toCharArray()String str = "hello";
char[] arr = str.toCharArray(); // ['h', 'e', 'l', 'l', 'o']
StringBuilder.toString()StringBuilder sb = new StringBuilder();
sb.append("hello");
String result = sb.toString(); // "hello"
StringBuilder가 더 효율적toString()으로 변환HashMap<K, V> 기본 사용법Map<String, Integer> map = new HashMap<>();
map.put("apple", 3); // 삽입
int val = map.get("apple"); // 조회 → 3
put(key, value) → key에 value 저장get(key) → key에 해당하는 value 반환map.get(key).add(x) 패턴 (List를 값으로 저장할 때)Map<String, List<String>> map = new HashMap<>();
map.putIfAbsent("fruit", new ArrayList<>()); // key가 없으면 리스트 생성
map.get("fruit").add("apple"); // 리스트에 값 추가
putIfAbsent()은 해당 key가 없을 때만 빈 리스트 생성 → defaultdict처럼 사용get().add()로 리스트 내부에 원소 추가getOrDefault(key, defaultValue)
Map<String, Integer> map = new HashMap<>();
System.out.println(map.getOrDefault("banana", 10)); // 10 (기본값 반환)
System.out.println(map); // 여전히 비어 있음 → 실제로 저장되진 않음
🔍 동작 설명
key가 맵에 존재하면 → 해당 값을 반환
없으면 → defaultValue를 반환만 하고, 맵에는 넣지 않음!