PLOD

[Java] Java 주요 클래스 정리 본문

개발 공부/Java

[Java] Java 주요 클래스 정리

훌룽이 2024. 7. 20. 16:54

개발자 취업 준비를 하면서, 코딩테스트를 보게 되는 순간들이 있는데, 간혹가다 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}
    }
}

참고) 

 

[JAVA] 코딩테스트용 주요 함수 모음

그동안 코딩테스트 준비를 C++로 해왔었는데, LG cns는 C++을 지원하지 않아서 > 작년 하반기에 급하게 자바로 코테를 준비했었다. (아마 코테 이틀 전?)올해 다시 cns 코테를 보게 되었는데.. 역시나

velog.io

https://eckrin.tistory.com/136

 

코테용 Java 라이브러리(자료구조) 정리

0. String ★★★★★ import java.io.*; //BufferedReader, BufferedWriter BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] strArray = br.readLi

eckrin.tistory.com

https://h-kyung.tistory.com/27

 

JAVA 코딩테스트 IDE사용 못할 경우, 자주 사용하는 함수 정리

라이브러리 선언 import java.util.*; import java.io.*; // Stream을 사용하기 위해선 import java.util.stream.*; 추가하자 // Entry를 사용하기 위해선 import java.util.Map.*; 추가하자 배열 int arr[] = {10, 8, 11, 2, 3, 0}; // 1.

h-kyung.tistory.com

https://st-lab.tistory.com/category/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0/Java

 

'자료구조/Java' 카테고리의 글 목록

프로그래밍과 관련하여 다양한 알고리즘 문제를 풀어보고, 프로그래밍 언어를 이해해 볼 수 있도록 돕고자 만든 블로그 입니다.

st-lab.tistory.com

 

'개발 공부 > 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
Comments