[Java] 1.컬렉션
컬렉션 프레임워크
여러 객체를 담을 수 있는 자료구조
Set
순서가 없는 컬렉션
HashSet
사용 예제
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Hello");
set.add("World");
set.add("Hello");
System.out.println(set);
}
Iterator 사용 예제
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Hello");
set.add("World");
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
TreeSet
정렬 추가
사용 방법 HashSet과 동일
Comparable
List
순서가 있는 컬렉션
ArrayList
내부적으로 데이터를 배열에서 관리한다.
자료를 추가/삭제 할 경우 그 다음 인덱스부터 데이터 복사가 일어나 성능 저하 이슈가 있으나, 인덱스를 통한 참조가 가능하여 검색에 유리
사용 예제
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
for (String str : list) {
System.out.println(str);
}
}
LinkedList
사용 방법 ArrayList와 동일
내부적으로 연결리스트를 사용하기 때문에 데이터의 추가/삭제 시 불필요한 복사가 없어 성능 저하가 없는 반면, 데이터 검색 시 처음부터 노드를 순회해야 하기 때문에 성능 이슈가 있음
Vector
사용 방법 동일
것보다 같은 인터페이스를 구현했는데 당연히 같아야지.. 굳이 왜 쓰고 있었지..
필요에 따라 크기를 동적으로 조절 할 수 있는 배열이며, 스레드 동기화 작업이 되어있어 한번에 하나의 스레드만 벡터를 사용 할 수 있다. 따라서 ArrayList보단 느리다.
Map
키-값 쌍의 순서가 없는 컬렉션, 키 중복이 불가능
HashMap<K, V>
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
Set<String> keys = map.keySet();
for (String key : keys) {
String value = map.get(key);
System.out.println(value);
}
}
TreeMap<K, V>
정렬 기능 추가
기타 등등..