코딩쿠의 코드 연대기

Java) javaUtil 패키지 본문

코딩스터디/JAVA스터디

Java) javaUtil 패키지

코딩쿠 2024. 11. 23. 22:30

학습 목표

  • java.util 패키지의 주요 클래스와 인터페이스 이해
  • Java의 시간 처리 방법과 java.time 패키지 활용
  • TimerTimerTask 클래스의 활용법 학습

java.util 패키지

java.util 패키지는 Java에서 데이터 구조, 시간 관리, 랜덤 숫자 생성 등 다양한 유틸리티 기능을 제공합니다. 아래는 주요 내용과 예제입니다.

1. 컬렉션 프레임워크

컬렉션 프레임워크는 데이터를 효율적으로 저장하고 조작할 수 있는 다양한 자료 구조를 제공합니다.

  • List: 순서가 있는 컬렉션, 중복 허용
    • 구현 클래스: ArrayList, LinkedList, Vector
  • Set: 순서가 없고 중복을 허용하지 않는 컬렉션
    • 구현 클래스: HashSet, TreeSet, LinkedHashSet
  • Map: 키-값 쌍으로 이루어진 데이터 구조
    • 구현 클래스: HashMap, TreeMap, LinkedHashMap

예제: ArrayList 사용

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

2. 날짜 및 시간 관리

java.util 패키지는 날짜와 시간을 다루기 위한 클래스를 제공합니다. 다만, Java 8 이상에서는 java.time 패키지 사용을 권장합니다.

  • Date: 특정 시점을 나타내는 클래스 (구식)
  • Calendar: 날짜와 시간을 조작하기 위한 클래스
  • GregorianCalendar: 그레고리력을 기반으로 한 구현

예제: Calendar 사용

import java.util.Calendar;

public class DateExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println("현재 연도: " + calendar.get(Calendar.YEAR));
        System.out.println("현재 월: " + (calendar.get(Calendar.MONTH) + 1));
        System.out.println("현재 일: " + calendar.get(Calendar.DAY_OF_MONTH));
    }
}

3. 랜덤 숫자 생성

java.util.Random 클래스를 사용하여 난수를 생성할 수 있습니다.

예제: 난수 생성

import java.util.Random;

public class RandomExample {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println("랜덤 숫자: " + random.nextInt(100)); // 0 ~ 99 사이의 정수
    }
}

4. 기타 유틸리티 클래스

  • Arrays: 배열 조작 유틸리티
  • Objects: 객체 비교, 해시코드 생성 등
  • Scanner: 입력 처리
  • StringTokenizer: 문자열 분리

Java 시간 처리 및 java.time 패키지

Java 8부터는 java.time 패키지가 도입되어, 날짜와 시간을 더 안전하고 직관적으로 처리할 수 있습니다.

1. 주요 클래스

  • LocalDate: 날짜만 처리 (예: 2024-11-23)
  • LocalTime: 시간만 처리 (예: 22:17:30)
  • LocalDateTime: 날짜와 시간 모두 처리 (예: 2024-11-23T22:17:30)
  • ZonedDateTime: 시간대 포함
  • Duration: 시간 간격
  • Period: 날짜 간격
  • DateTimeFormatter: 날짜/시간 포맷 변환

2. 예제: java.time 사용

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class TimeExample {
    public static void main(String[] args) {
        // 현재 날짜와 시간
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println("현재 날짜: " + date);
        System.out.println("현재 시간: " + time);
        System.out.println("현재 날짜와 시간: " + dateTime);

        // 특정 날짜 생성
        LocalDate specificDate = LocalDate.of(2023, 12, 25);
        System.out.println("특정 날짜: " + specificDate);

        // 날짜 포맷팅
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        System.out.println("포맷팅된 날짜: " + date.format(formatter));
    }
}

Timer/TimerTask

TimerTimerTask는 작업을 예약하고 반복 실행하는 데 사용됩니다.

1. 주요 클래스

  • Timer: 스케줄링 클래스
  • TimerTask: 실행할 작업 정의

2. schedule() 메서드

  • 단일 실행: schedule(TimerTask task, long delay)
  • 반복 실행: schedule(TimerTask task, long delay, long period)

3. 예제: Timer와 TimerTask 사용

import java.util.Timer;
import java.util.TimerTask;

public class TimerExample {
    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("작업 실행!");
            }
        };

        // 2초 후 실행
        timer.schedule(task, 2000);

        // 3초 후부터 1초 간격으로 반복 실행
        timer.scheduleAtFixedRate(task, 3000, 1000);
    }
}

ScheduledExecutorService

Java 5 이상에서는 ScheduledExecutorService를 권장합니다.

장점:

  • 다중 스레드 처리
  • 더 정교한 제어
  • 안정성

예제: ScheduledExecutorService 사용

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SchedulerExample {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

        Runnable task = () -> System.out.println("스케줄된 작업 실행!");

        scheduler.scheduleAtFixedRate(task, 1, 2, TimeUnit.SECONDS);
    }
}

추가 팁

  • Java 8 이상에서는 java.time 패키지를 우선적으로 사용하세요.
  • 복잡한 예약 작업에는 ScheduledExecutorService를 활용하세요.
  • 예외 처리 및 리소스 해제 (cancel(), shutdown())를 잊지 마세요.

'코딩스터디 > JAVA스터디' 카테고리의 다른 글

Java) 기본 API클래스  (0) 2024.11.22
Java 람다식  (0) 2024.11.21
Java 제네릭  (1) 2024.11.20
Java) I/O  (0) 2024.11.19
Java 애노테이션  (3) 2024.11.18