230306 체크포인트

허크·2023년 3월 6일
0

컬렉션 프레임워크


List

  • 중복 허용, 중복 순서 있음

ArrayList

  • 각 요소를 객체로 가지고 있음
    • Arraylist는 객체의 메모리주소값을 내부배열에 가지고 있음

  • 사용 예시
public class CheckPoint{
	public static void main(String{} args) {
    	
        int[] arr = new int[] { 1, 2, 3, 4, 5 };
        System.out.println(arr[1]);
        
        // arr -> 배열의 시작 주소
        // arr에 저장되어 있는 배열의 시작주소 +
        // (타입에 따라 차지하는 메모리 공간의 크기 * 인덱스)        
    }
}

LinkedList

public static class Node[E]{

	E item;
    Node<E> next;
    Node<E> prev;
    
    Node(Node<E>, E element, Node<E> next) {
    	this.item = element;
        this.next = next;
        this.prev = prev;
    }
}
  • 중간데이터 추가, 삭제 => LinkedList
    • 순차적인 추가 및 삭제, 데이터 검색 => ArrayList

***

Iterator

public class IteratorExample{
	public static void main(String{} args) {
    	
        ArrayList<Interger> arrayList = new ArrayList<>();
        
        for (int i = 1; i<= 10; i++) arrayList.add(i);
        
        System.out.println(arrayList);
        
        Iterator<Interger> it = arrayList.iterator();
        
        while (it.hasNext()) {
        	System.out.println("num       = " + it.next());
            it.remove();
            System.out.println("arrayList = " + arrayList);
            System.out.println("---------------------------");
        }
    }
}
  • hasnext() : 읽어올 객체가 있는지 확인
  • next() : (읽어올 객체가 있는지 확인 후) 객체를 읽어옴
  • remove() : 읽어온 객체를 삭제



Set

  • 중복 허용 X, 저장 순서 X

HashSet

Hash Code를 사용하여 데이터의 중복을 검사하는 Set 구현 클래스

public class HashSetExample{
	public static void main(String[] args) {
    	
        HashSet<Integer> hashSet = new HashSet<>();
        
        for (int i = 1; hashSet.size() < 6; i++) {
        
        	int num = (int) (Math.random() * 45) + 1;
            System.out.print(i + "번째 num = " + num);
        
        	try { Thread.sleep(millis:1000); } catch (Exception e) {}
            
            hashSet.add(num);
        }
        
        System.out.println("당첨 번호 : " + hashSet);
	}        
}

TreeSet

이진 탐색 트리를 사용하여 객체를 저장하는 Set 구현 클래스

import java.util.TreeSet;

public class TreeSetExample{
    public static void main(String[] args) {

        TreeSet<Integer> treeSet = new TreeSet<>();

        for (int i = 1; treeSet.size() < 6; i++) {

            int num = (int) (Math.random() * 45) + 1;
            System.out.println(i + "번째 num = " + num);

            try { Thread.sleep(1000); } catch (Exception e) {}

            treeSet.add(num);
        }

        System.out.println("당첨 번호 : " + treeSet);
    }
}
  • 자동으로 사전 편찬 순에 따라 오름차순으로 정렬됨



Map

Key와 Value의 쌍으로 구성된 Entry 객체를 저장

  • Key는 중복 허용 X, Value는 중복 허용 O, 저장 순서 X

HashMap

해싱을 사용하여 데이터를 저장하는 Map 구현 클래스

public class HashMapExample{
    public static void main(String[] args) {

        HashMap<String, Integer> hashMap = new HashMap<>();

        System.out.println("----배달 횟수 조사----");
        hashMap.put("본인임", 2);
        hashMap.put("언민이", 6);
        hashMap.put("땅미쿤", 5);
        hashMap.put("현이형", 6);
        hashMap.put("정열형", 3);
        hashMap.put("곽삼촌", 1); // 🟥

        // 이름 : xxx, 치킨 먹은 횟수 : x
        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator1 = entrySet.iterator();

        while (iterator1.hasNext()) {
            Map.Entry<String, Integer> entry = iterator1.next();
            System.out.println("이름 : " + entry.getKey() + ", 치킨 먹은 횟수 : "+ entry.getValue());
        }
    }
}
profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글