List : 중복이 허용되는 순서가 있는 구조Set : 중복이 허용되지 않는 구조Map : key, value 쌍이 있고, key 값이 중복되지 않는 구조ArrayList : List를 implement 하는 크기 조정 가능한 배열HashSet : Set을 implement 하는 순서를 저장하지 않는 해시 테이블HashMap : Map을 implement 하는 null key 와 null value를 허용하는 해시 테이블

List와 Deque를 모두 implement 하는 구조import java.util.LinkedList;
public class Example {
public static void main(String args[]) {
LinkedList<Integer> numbers = new LinkedList<>();
// Adding elements
numbers.add(10);
numbers.add(20);
numbers.add(30);
// Accessing elements
System.out.println("First element: " + numbers.getFisrt());
// Removing elements
numbers.removeFirst();
// Size of the list
System.out.println("Size of list: " + numbers.size());
// Iterating over the list
for (Integer number : numbers) {
System.out.println(number);
}
}
}

Set을 구현, hash table의 백업을 받음import java.util.HashSet;
public class Example {
public static void main(String args[]) {
HashSet<String> set = new HashSet<>();
// Adding elements
set.add("Dog");
set.add("Cat");
set.add("Bird");
set.add("Dog"); // 중복 요소, 추가되지 않음
// Checking if an element exists
System.out.println("Contains 'Cat': " + set.contains("Cat"));
// Size of the set
System.out.println("Size of set: " + set.size());
// Iterating over the set
for (String animal : set) {
System.out.println(animal);
}
}
}
Set을 구현, hash table 과 linked list의 백업을 받음HashSet을 상속 받음. Double Linked List 유지SortedSet을 상속하는 NavigableSet 을 구현Map<integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "Three");
treeMap.put(1, "One");
treeMap.put(2, "Two");
System.out.println(treeMap); // key 순으로 정렬 : {1=One, 2=Two, 3=Three}
Map을 구현, hash table의 백업을 받음HashMap 상속 받음. Double Linked List 유지NavigableMap 구현, red-black tree 의 백업 받음NullPointerException)hasNext() : 다음 요소가 존재하면 true 반환 (전체 요소 순회 시 사용)next() : 다음 요소를 반환 remove() : 마지막으로 반환된 요소를 삭제List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
Collections.sort() List<String> list = Arrays.asList("Banana", "Apple", "Cherry");
Collections.sort(list);
// Apple, Banana, Cherry 순으로 정렬
List.sort()list.sort(Comparator.naturalOrder());Arrays.sort() int[] numbers = {4, 2, 7, 3};
Arrays.sort(numbers);
// 2, 3, 4, 7 순으로 정렬Comparator 인터페이스Collections.sort(list, Comparator.reverseOrder());Comparable 인터페이스 public class Person implements Comparable<Person> {
private String name;
private int age;
// getters, setters, constructor
@Override
public int comPareTo(person other) {
return Integer.compare(this.age), other.age);
}
}Collection.binarySearch()
int index = Collections.binarySearch(list, "Apple");Map.containsKey()
List.contains()
탐색의 시간 복잡도는 어떤 자료 구조를 사용하는지에 따라 달라진다.