일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Queue
- data structure
- js
- spring
- 문자열
- 공개키 암호화
- javascript
- generic class
- 가상컴퓨팅
- Java
- jsp
- Algorithm
- python
- JPA
- 자료구조
- 항해99
- 자바의정석
- 생성자
- 암호학
- 코딩테스트
- 개발자취업
- DB
- 코테
- BFS
- sql
- 코딩테스트준비
- 알고리즘
- 크루스칼
- dbms
- dfs
- Today
- Total
PLOD
[Java] Java 주요 클래스 정리 본문
개발자 취업 준비를 하면서, 코딩테스트를 보게 되는 순간들이 있는데, 간혹가다 Java로 언어가 제한되는 곳이 있다.(ex. 현대 오토에버 특정 직무). 낭패를 보지 않으려면 자바 감이 떨어지지 않게 준비를 항시 해야 될 거 같다.
+
사실 필자는 Python으로 코딩테스트를 준비해왔다. 하지만 요새 Java로 코딩테스트 언어를 제한하는 공채 기업들이 많아져서 피눈물을 흘리며 Java 코딩테스트 준비를 하고 있는 중이다..
1. Integer 클래스
Integer는 기본 자료형인 int를 객체로 다룰 수 있도록 제공되는 래퍼 클래스입니다. 숫자를 다룰 때, 다양한 유틸리티 메서드와 상수를 제공합니다.
주요 특징
- 기본 자료형 int의 객체 버전.
- null 값을 허용할 수 있음 (기본 자료형은 허용 불가).
- 정수 값의 변환, 비교, 상수 제공 등의 유틸리티 메서드 포함.
주요 메서드
valueOf()
- 문자열 또는 숫자를 Integer 객체로 변환.
Integer num = Integer.valueOf("123"); // 문자열 -> Integer
Integer num2 = Integer.valueOf(456); // 숫자 -> Integer
parseInt()
- 문자열을 기본 자료형 int로 변환.
int num = Integer.parseInt("789");
toString()
- 정수를 문자열로 변환.
String str = Integer.toString(100); // "100"
compare()
- 두 정수를 비교 (결과: -1, 0, 1).
int result = Integer.compare(5, 10); // -1 (5 < 10)
MAX_VALUE / MIN_VALUE
- 정수형의 최대값, 최소값.
System.out.println(Integer.MAX_VALUE); // 2147483647
System.out.println(Integer.MIN_VALUE); // -2147483648
bitCount()
- 숫자를 2진수로 변환했을 때 1의 개수를 반환.
int count = Integer.bitCount(7); // 7(111) -> 3
코딩 테스트 활용 예
- 문자열을 숫자로 변환할 때:
String input = "42";
int num = Integer.parseInt(input);
- 두 숫자의 크기를 비교할 때:
int a = 5, b = 10;
System.out.println(Integer.compare(a, b)); // -1
2. Character 클래스
Character는 기본 자료형 char을 객체로 다룰 수 있도록 제공되는 래퍼 클래스입니다. 문자 데이터의 특성을 검사하거나 변환하는 메서드를 제공합니다.
주요 특징
- 기본 자료형 char의 객체 버전.
- 문자의 유효성 검사, 변환 등의 유틸리티 메서드 포함.
주요 메서드
isDigit()
- 문자가 숫자인지 확인.
boolean result = Character.isDigit('5'); // true
isLetter()
- 문자가 알파벳인지 확인.
boolean result = Character.isLetter('a'); // true
isLetterOrDigit()
- 문자가 알파벳 또는 숫자인지 확인.
boolean result = Character.isLetterOrDigit('1'); // true
isUpperCase() / isLowerCase()
- 문자가 대문자인지 또는 소문자인지 확인.
boolean upper = Character.isUpperCase('A'); // true
boolean lower = Character.isLowerCase('a'); // true
toUpperCase() / toLowerCase()
- 문자를 대문자 또는 소문자로 변환.
char upper = Character.toUpperCase('b'); // 'B'
char lower = Character.toLowerCase('D'); // 'd'
isWhitespace()
- 문자가 공백(스페이스, 탭 등)인지 확인.
boolean result = Character.isWhitespace(' '); // true
코딩 테스트 활용 예
- 문자 검사 및 변환:
char ch = '9';
if (Character.isDigit(ch)) {
System.out.println(ch + " is a digit."); // 9 is a digit.
}
- 문자열을 변환할 때:
String input = "Hello";
for (char c : input.toCharArray()) {
System.out.print(Character.toLowerCase(c)); // hello
}
3. java.util.* 패키지
이 패키지는 컬렉션 프레임워크와 유틸리티 기능을 제공하며, 데이터 구조와 알고리즘 구현에 유용한 도구를 포함합니다.
주요 클래스
Collections (유틸리티 클래스)
- Collections.sort(List): 리스트 정렬.
- Collections.max(Collection), Collections.min(Collection): 최대값, 최소값 찾기.
ArrayList
- 가변 크기의 배열로 동적으로 데이터를 저장.
- 활용: 동적 데이터 저장 및 빠른 탐색.
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
Collections.sort(list); // 정렬
LinkedList
- 양방향 연결 리스트 구현.
- 활용: 큐(Queue), 덱(Deque) 등으로 사용.
Deque<Integer> deque = new LinkedList<>();
deque.add(1); // 큐로 사용
deque.addFirst(0); // 덱 기능
HashMap / TreeMap
- HashMap: 키-값 쌍 저장, 빠른 조회(O(1)).
- TreeMap: 키를 자동 정렬하며 저장.
- 활용: 키-값 기반 데이터 저장 및 조회.
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 2);
System.out.println(map.get("apple")); // 3
HashSet / TreeSet
- HashSet: 중복 없는 데이터 저장.
- TreeSet: 중복 없는 데이터 + 자동 정렬.
- 활용: 중복 제거, 고유값 처리.
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
System.out.println(set.contains(1)); // true
PriorityQueue
- 힙(Heap) 기반 우선순위 큐 구현.
- 활용: 최소값, 최대값 기반 정렬 작업.
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(3);
pq.add(1);
pq.add(2);
System.out.println(pq.poll()); // 1 (최소값)
Scanner
- 표준 입력(System.in)으로 데이터 읽기.
- 활용: 입력받은 데이터를 파싱 및 처리.
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String str = sc.next();
4. java.io.* 패키지
이 패키지는 입출력 작업(IO)을 위한 클래스를 제공합니다. 코딩 테스트에서는 대규모 데이터 입출력 처리에 주로 사용됩니다.
주요 클래스
BufferedReader
- 빠른 입력 처리를 위해 버퍼를 사용하는 입력 클래스.
- 활용: 대량 데이터 입력 처리.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int num = Integer.parseInt(input);
BufferedWriter
- 빠른 출력 처리를 위해 버퍼를 사용하는 출력 클래스.
- 활용: 대량 데이터 출력 처리.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello, World!");
bw.newLine();
bw.flush();
InputStreamReader / OutputStreamWriter
- 바이트 스트림을 문자 스트림으로 변환.
- 활용: 다양한 인코딩 지원.
InputStreamReader isr = new InputStreamReader(System.in);
OutputStreamWriter osw = new OutputStreamWriter(System.out);
PrintWriter
- 다양한 출력 형식을 지원하는 클래스.
- 활용: 빠르고 포맷된 출력.
PrintWriter pw = new PrintWriter(System.out);
pw.println("Formatted output");
pw.flush();
코딩 테스트에서의 활용 예시
빠른 입력/출력 처리
많은 데이터 입력/출력 시, BufferedReader와 BufferedWriter 사용
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
String[] inputs = br.readLine().split(" ");
for (String input : inputs) {
bw.write(input + " ");
}
bw.flush();
}
}
데이터 구조 활용
최단 경로 문제에서 PriorityQueue 사용
import java.util.*;
public class Main {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(5);
pq.add(1);
pq.add(3);
while (!pq.isEmpty()) {
System.out.println(pq.poll()); // 1, 3, 5 순 출력
}
}
}
HashMap으로 빈도 계산
문자열에서 각 문자의 빈도수 계산
import java.util.*;
public class Main {
public static void main(String[] args) {
String str = "hello";
Map<Character, Integer> freq = new HashMap<>();
for (char c : str.toCharArray()) {
freq.put(c, freq.getOrDefault(c, 0) + 1);
}
System.out.println(freq); // {h=1, e=1, l=2, o=1}
}
}
참고)
https://eckrin.tistory.com/136
https://h-kyung.tistory.com/27
https://st-lab.tistory.com/category/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0/Java
'개발 공부 > Java' 카테고리의 다른 글
[Java] String(문자열) (0) | 2024.11.26 |
---|---|
[Java] 제네릭 클래스(Generic Class) (0) | 2024.06.07 |
[Java] 싱글톤 패턴(Singleton pattern) (0) | 2023.12.31 |
[Java] 연산자(Operator) (0) | 2023.09.12 |
[Java] 배열(array) (0) | 2023.09.04 |