Collection 복습

HH_Nebula·2022년 9월 13일
0
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.Vector;

public class Practice {

	public static void main(String[] args) {

		// 배열 - 같은 자료형의 변수를 여러개(n) --> 한개만 선언해서 index
		// 배열은 크기를 지정해줘야 하며 크기를 벗어난 경우 ArrayIndexOutOFBoundsException 발생

		// Collection List - 입력 순서 유지 - Index를 통해 접근 가능
		List<String> arrayList = new ArrayList<String>(); // 일반적인 가변 배열
		List<String> vector = new Vector<String>(); // ArrayList와 동일하나 동기화를 지원함 ( 안정적이지만 느림 )
		List<String> linkedList = new LinkedList<String>(); // 데이터의 삽입 삭제가 빈번한 경우 사용

		arrayList.add("Java");
		arrayList.add("Python");
		arrayList.add("IntelliJ");
		arrayList.add("Java"); // 중복을 허용함

		vector.add("Java");
		vector.add("Python");
		vector.add("IntelliJ");
		vector.add("Java"); // 중복을 허용함

		linkedList.add("Java");
		linkedList.add("Python");
		linkedList.add("IntelliJ");
		linkedList.add("Java"); // 중복을 허용함

		// toString 출력
		System.out.println("ArrayList : " + arrayList.toString());
		System.out.println("Vector : " + vector.toString());
		System.out.println("LinkedList : " + linkedList.toString());
		System.out.println(); // 줄바꿈

		// get() 메서드를 통해 인덱스에 접근하여 출력
		for (int i = 0; i < arrayList.size(); i++) {
			System.out.println("ArrayList " + i + "번 인덱스 : " + arrayList.get(i));
		}
		System.out.println(); // 줄바꿈

		// ========================================================================================

		// Collection Set
		// List와 달리 인덱스가 없으며 중복을 허용하지 않음
		Set<String> hashSet = new HashSet<String>(); // 일반적인 Set
		Set<String> linkedHashSet = new LinkedHashSet<String>(); // 입력 순서가 보장되는 Set
		Set<String> treeSet = new TreeSet<String>(); // 정렬 기능이 추가된 Set

		hashSet.addAll(arrayList); // 컬렉션 내 모든 요소를 추가

		linkedHashSet.add("iPod"); // 입력 순서 보장
		linkedHashSet.add("Apple");
		linkedHashSet.add("Red");
		linkedHashSet.add("Apple"); // 중복을 허용하지 않음

		treeSet.add("iPod"); // 입력 순서와 관계 없이 자동 정렬
		treeSet.add("Apple");
		treeSet.add("Red");
		treeSet.add("Apple"); // 중복을 허용하지 않음

		// toString 출력
		System.out.println("HashSet : " + hashSet.toString() + " 순서 유지 X");
		System.out.println("LinkedHashSet : " + linkedHashSet.toString() + " 순서 유지 O");
		System.out.println("TreeSet : " + treeSet.toString() + " 자동 정렬");
		System.out.println(); // 줄바꿈

		// 인덱스가 없어 iterator() 메서드를 통해 접근
		Iterator<String> iter = hashSet.iterator();
		for (int i = 0; i < hashSet.size(); i++) {
			System.out.println(iter.next());
		}
		System.out.println(); // 줄바꿈

		// hasNext() 메서드를 사용하더 좀더 간단히
		Iterator<String> iterator = linkedHashSet.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		System.out.println(); // 줄바꿈

		// ========================================================================================

		// Map
		// Key, Value 한 쌍으로 이루어진 구조
		// Key 는 중복 불가, Value 는 중복 허용
		// Key 중복 시 기존의 값을 덮어 씌움
		// 동일한 키가 될 조건은 hashCode() 의 리턴값이 같고 .equals() 의 결과가 true
		Map<String, Integer> hashMap = new HashMap<String, Integer>(); // 일반적 구조
		Map<String, Integer> hashTable = new Hashtable<String, Integer>(); // HashMap + 동기화
		Map<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>(); // 순서 보장

		hashMap.put("Samsung", 125);
		hashMap.put("Apple", 154);
		hashMap.put("LG", 99);

		hashTable.put("Samsung", 125);
		hashTable.put("Apple", 154);
		hashTable.put("LG", 99);

		linkedHashMap.put("Samsung", 125);
		linkedHashMap.put("Apple", 154);
		linkedHashMap.put("LG", 99); // 입력 순서 보장
		
		// toString 을 통해 모든 K, V 출력
		System.out.println("HashMap : " + hashMap.toString());
		System.out.println("HashTable : " + hashTable.toString());
		System.out.println("linkedHashMap : " + linkedHashMap.toString());
		System.out.println(); // 줄바꿈
		
		Set<String> mapKey = hashMap.keySet(); // Map 의 Key를 Set 으로 만듬
		Iterator<String> iterKey = mapKey.iterator(); // Iterator 를 통해 Set 에 접근
		System.out.println(hashMap.get(iterKey.next())); // Iterator 안에는 Key 가 담겨 있으므로
		System.out.println(hashMap.get(iterKey.next())); // Map 의 get(Key) 메서드를 통해 Value에 접근

	}

}
profile
공부하고 기록하고 복습하고

0개의 댓글