728x90
java.util 패키지
- 날짜와 관련된 클래스인 Date, Calendar클래스
- List,Set, Collection, Map은 자료구조(자료를 저장할 수 있는 구조)
- 즉, 컬렉션 프레임워크와 관련된 인터페이스
자료를 다양한 방식으로 관리하기 위한 방법이 컬렉션 프레임워크로
중복을 허용하고 저장된 순서를 기억하지 못한다.
<Collection Interface> : 중복을 허용하고 저장된 순서를 기억하지 못함
- add(Object) : 컬렉션에 자료를 추가 - bolean
- iterator() : 자료를 하나씩 꺼내기 위한 iterator 인터페이스를 반환 - iterator
- size() : 저장된 자료의 수를 반환 - int
<Iterator Interface> : Collection Interface를 의존함
- hasNext() : 꺼낼 것이 있는지 없는지 살펴볼 때 사용 - boolean
- next() : 하나씩 자료를 꺼낼 때 사용 - Object
<Set Interface>
: 중복과 순서가 없는 자료구조를 표현하고 Collection Interface를 상속받고 있음
그리고 Set에는 Hashset과 TreeSet이 있음
- add(Object) : 같은 자료가 있으면 false 반환, 같은 자료가 없으면 true 반환 - boolean
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetExam {
public static void main(String[] args) {
// Set은 인터페이스이기 때문에 new로 객체 생성할 수 없음
// Set을 구현한 클래스인 HashSet을 이용해서 객체를 생성함
Set<String> set1 = new HashSet<>();
//Set<String> set1 = new HashSet<>();
boolean flag1 = set1.add("kim");
boolean flag2 = set1.add("lee");
boolean flag3 = set1.add("kim");
// 저장된 크기를 출력합니다. 3개를 저장하였지만,
// 이미 같은 값이 있었기 때문에 2개가 출력됨
System.out.println(set1.size());
System.out.println(flag1); //true
System.out.println(flag2); //true
System.out.println(flag3); //false -> 중복
// 들어있는 값을 하나씩 값을 꺼냄
Iterator<String> iter = set1.iterator();
// 인덱스가 필요한 것이 아니기 때문에 for문보다 while문 사용함
while (iter.hasNext()) { // 현재 Set에 데이터를 꺼낼 것이 있다면 true 리턴함
// next()메소드는 값을 하나를 꺼내고 하나를 꺼내면 자동으로 다음 것을 참조함
// 23번째줄에서 String을 사용
String str = iter.next();
System.out.println(str); // kim
// lee
}
}
}
<List Interface>
: 중복을 허용하면서 순서를 기억하는 자료구조를 표현하고 Collection Interface를 상속받고 있음
배열과 비슷하나 배열은 1번 생성하면 크기 변경이 불가능하고
리스트는 저장 공간이 필요에 따라 자유롭다는 점에서 차이가 있다.
- get(int) : 순서를 기억하기 때문에 순차적으로 자료를 꺼낼 수 있고 int 값이 인덱스 번호를 나타냄 - Object
예제 1번)
import java.util.ArrayList;
import java.util.List;
public class ListExam {
public static void main(String[] args) {
// List는 인터페이스이기 때문에 new로 객체 생성 불가능
// List를 구현하고 있는 ArrayList를 통해 객체 생성
// 오른쪽 항에 타입이 명시되어 있지 않지만,
// 왼쪽 항에 <String>이라고 적혀있기 때문에 자바가 알아서
// list를 String을 담는 ArrayList로 초기화해줌
List<String> list = new ArrayList<>();
// list에 3개의 문자열을 저장합니다.
list.add("kim");
list.add("lee");
list.add("kim");
// list에 저장된 자료의 수를 출력함(중복을 허용하므로 3을 출력)
System.out.println(list.size());
// List는 순서가 있는 자료구조이기 때문에 인덱스를 이용해서 값을 꺼내올 수 있음
for(int i=0; i<list.size(); i++){
// List에서 값을 꺼낼 때에는 get을 사용하고 ()에 인덱스 값을 넣어줌
// 9번째줄에서 String을 사용
String str = list.get(i);
System.out.println(str); // kim
// lee
// kim
}
}
}
예제 2번)
import java.util.*;
public class ListExam{
public List<String> addArray(String[]arr1, String[]arr2){
List<String> list = new ArrayList<String>();
for(String str : arr1){
list.add(str);
}
for(String str : arr2){
list.add(str);
}
return list;
}
public static void main(String[] args){
ListExam le = new ListExam();
String[] arr1 = {"l","i","s","t"};
String[] arr2 = {"예","제"};
List<String> list = le.addArray(arr1,arr2);
for(int i=0; i<list.size(); i++){
System.out.println((i+1) + "번째 원소는 " + list.get(i) + " 입니다.");
}
}
}
<Map Interface>
: key와 value를 가지는 자료구조로 Set Interface를 의존함
Map에 저장된 key들은 중복된 값을 가질 수 없고, 값은 중복될 수 있음
- get(int) : 저장하고나서 원하는 값을 꺼낼 때에는 key를 매개변수로 받아들이는 get() 메서드를 이용해서 값을 꺼냄 - Object
- KeySet() : Map에 저장된 key들은 중복된 값을 가질 수 없는 특징 때문에 Map은 자신이 가지고 있는 모든 Key에 대한 정보를 읽어올 수 있는 Set을 반환 - Set
- put(Object, Object) : 저장할 때 put을 이용해서 key와 value를 함께 저장 - void
예제 1번)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapExam {
public static void main(String[] args) {
// Key, Value가 모두 String 타입인 HashMap 인스턴스를 만듬
Map<String, String> map = new HashMap<>();
// key와 value값을 put으로 저장함
map.put("001", "kim");
map.put("002", "lee");
map.put("003", "choi");
// 같은 key가 2개 있을 수 없음 -> 첫번째로 저장했던 001, kim은 001, kang으로 바뀜
map.put("001", "kang");
// map에 저장된 자료의 수를 출력함(3이 출력)
System.out.println(map.size());
// 키가 001, 002, 003인 값을 꺼내 출력함
System.out.println(map.get("001")); // kang
System.out.println(map.get("002")); // lee
System.out.println(map.get("003")); // choi
// map에 저장된 모든 key들을 Set 자료구조로 꺼냄
// keySet의 리턴 타입이 Set이므로 Set으로 사용
// 9번째 줄에서 String 사용
Set<String> keys = map.keySet();
// Set 자료구조에 있는 모든 key를 꺼내기 위하여 Iterator를 구함
// Key가 모두 String
Iterator<String> iter = keys.iterator();
while (iter.hasNext()) {
// key를 꺼냄
String key = iter.next();
// key에 해당하는 value를 꺼냄
String value = map.get(key);
// key와 value를 출력
System.out.println(key + " : " + value); // 001 : kim
// 002 : lee
// 003 : choi
}
}
}
예제 2번)
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class MapExam {
public Map<String, Integer> makeMap(){
Map<String, Integer> products = new HashMap<>();
products.put("가위",2500);
products.put("크레파스",5000);
return products;
}
public static void main(String[] args){
MapExam me = new MapExam();
Map<String,Integer> products = me.makeMap();
Set<String> keys = products.keySet();
Iterator<String> iter = keys.iterator();
while(iter.hasNext()) {
String key = iter.next();
Integer value = products.get(key);
System.out.println(key + " : " + value);
}
}
}
728x90
'강의 정리하기 > JAVA' 카테고리의 다른 글
Date 클래스, Calendar 클래스, java.time 패키지 (0) | 2023.03.09 |
---|---|
Generic (0) | 2023.03.09 |
기본 API 클래스(1) (0) | 2023.03.08 |
Exception 예외처리(2) (0) | 2023.03.07 |
Exception 예외 처리(1) (0) | 2023.03.07 |