자주 활용되는 java.util
1. Collections Framwork
데이터를 구조화하고 관리하는데 필수적인 도구입니다.
List, Set, Map과 같은 인터페이스와 그 구현체들이 java.util에 포함되어 있습니다.
1.1 LIst
- ArrayList<E>: 동적 배열을 사용하여 요소를 저장하는 리스트. 크기가 가변적이며 순차적인 데이터 접근에 유리합니다.
- LinkedList<E>: 요소를 노드로 연결한 리스트. 삽입, 삭제 작업이 빈번할 때 유리합니다.
List<String> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
List<String> linkedList = new LinkedList<>();
linkedList.add("Orange");
linkedList.add("Pineapple");
1.2 Set
- HashSet<E>: 중복을 허용하지 않으며, 순서가 없는 집합입니다. 데이터 검색이 빠릅니다.
- TreeSet<E>: 정렬된 상태를 유지하는 집합입니다. 자연 순서나 제공된 비교자에 따라 정렬됩니다.
Set<String> hashSet = new HashSet<>();
hashSet.add("One");
hashSet.add("Two");
Set<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
1.3 Map
- HashMap<K, V>: 키와 값을 쌍으로 저장하는 데이터 구조. 중복 키를 허용하지 않으며, 빠른 검색이 가능합니다.
- TreeMap<K, V>: 키를 정렬된 상태로 저장하는 맵. 키에 대한 순서를 유지합니다.
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("A", 1);
hashMap.put("B", 2);
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("X", 100);
treeMap.put("Y", 200);
1.4 Collections클래스
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);
Collections.sort(numbers); // 리스트 정렬
2.Date & Time
Java8 이전에는 java.util.Date 와 java.util.Calendar 로 날짜와 시간을 다루었지만
Java8 이후에는 java.time패키지가 추가됨.그러나 여전히 자주 사용됩니다.
2.1 Date
Date date = new Date();
System.out.println(date); // 현재 날짜와 시간 출력
2.2 Calendar
Calendar calendar = Calendar.getInstance();
calendar.set(2023, Calendar.OCTOBER, 5); // 2023년 10월 5일 설정
Date specificDate = calendar.getTime();
3.Random
임의의 숫자를 생성하는 데 사용됩니다. 정수, 부동 소수점 숫자, 불리언 값 등 다양한 타입의 랜덤 값을 생성할 수 있습니다.
Random random = new Random();
int randomInt = random.nextInt(100); // 0부터 99까지의 랜덤 정수 생성
double randomDouble = random.nextDouble(); // 0.0에서 1.0 사이의 랜덤 실수 생성
4.Scanner
콘솔 입력이나 파일 입력을 처리하는 데 자주 사용됩니다. 사용자 입력을 읽거나, 파일의 내용을 쉽게 처리할 수 있습니다.
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine(); // 사용자로부터 문자열 입력 받기
Scanner fileScanner = new Scanner(new File("data.txt"));
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
System.out.println(line);
}
5. Arrays
배열을 다루는 유틸리티 메서드를 제공합니다. 배열의 정렬, 검색, 복사 등의 작업을 간편하게 할 수 있습니다.
int[] numbers = {5, 2, 8, 4};
Arrays.sort(numbers); // 배열 정렬
System.out.println(Arrays.toString(numbers)); // 배열 출력
int index = Arrays.binarySearch(numbers, 8); // 이진 탐색으로 배열에서 값 찾기
6. Timer & TimerTask
작업을 일정 시간 후에 실행하거나 주기적으로 실행할 때 사용됩니다. 일정 주기로 특정 작업을 자동으로 수행해야 할 때 유용합니다.
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Task is running");
}
}, 2000); // 2초 후에 작업 실행
7. UUID
범용적으로 고유한 식별자를 생성하는 데 사용됩니다. 주로 분산 시스템에서 고유한 식별자를 생성하거나 객체를 고유하게 구분할 때 사용됩니다.
UUID uuid = UUID.randomUUID();
System.out.println(uuid); // 고유한 UUID 생성 및 출력
8. Optional(Java8 이후)
값이 존재할 수도 있고 없을 수도 있는 객체를 다루는 데 사용됩니다. 이를 통해 null로 인한 예외 처리를 보다 안전하게 할 수 있습니다.
Optional<String> optionalName = Optional.of("John");
if (optionalName.isPresent()) {
System.out.println(optionalName.get()); // "John" 출력
}
optionalName.ifPresent(name -> System.out.println(name)); // 값이 존재하면 출력