본문 바로가기
Language/JAVA

[JAVA] 컬렉션즈 프레임워크 1~9 ArrayList, HashSet, Map

by 아이엠제니 2022. 2. 14.

생활코딩 자바 공부 기록

 

 

1. ArrayList의 사용법

배열: 연관된 데이터를 관리하기 위한 수단

컬렉션즈 프레임워크: 배열의 크기를 변경할 수 있다

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        String[] arrayObj = new String[2];
        arrayObj[0] = "one";
        arrayObj[1] = "two";
//        arrayObj[2] = "three"; // 컴파일 오류가 발생한다

        System.out.println("==== Array ====");
        for (int i = 0; i < arrayObj.length; i++) {
            System.out.println(arrayObj[i]);
        }

        ArrayList<String> al = new ArrayList<String>(); // 제네릭 도입
        al.add("one");
        al.add("two");
        al.add("three");

        System.out.println("==== ArrayList ====");
        for (int i = 0; i < al.size(); i++) {
            String value = al.get(i);
            System.out.println(value);
        }
    }

}

 

 

 

2. 전체적인 구성

컬렉션즈 프레임워크라는 것은 다른 말로는 컨테이너라고 부른다.

즉, 값을 담는 그릇이라는 의미.

 

 

 

3. List와 Set의 차이점

List는 중복을 허용하고, Set은 중복을 허용하지 않는다.

List 순서 보장 O, Set 순서 보장 X

import java.util.HashSet;
import java.util.Iterator;

public class SetDemo {
    public static void main(String[] args) {
        HashSet<Integer> A = new HashSet<Integer>();
        A.add(1);
        A.add(2);
        A.add(2);
        A.add(2);
        A.add(2);
        A.add(3);

        Iterator hi = (Iterator) A.iterator();
        while (hi.hasNext()) {
            System.out.println(hi.next());
        }
    }

}

HashSet 중복 X

 

 

 

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

public class SetDemo {
    public static void main(String[] args) {
        ArrayList<Integer> A = new ArrayList<Integer>();
        A.add(1);
        A.add(2);
        A.add(2);
        A.add(2);
        A.add(2);
        A.add(3);

        Iterator hi = (Iterator) A.iterator();
        while (hi.hasNext()) {
            System.out.println(hi.next());
        }
    }

}

ArrayList 중복 O

 

 

 

4. Set이란?

import java.util.HashSet;
import java.util.Iterator;

public class SetDemo {
    public static void main(String[] args) {
        HashSet<Integer> A = new HashSet<Integer>();
        A.add(1);
        A.add(2);
        A.add(3);

        HashSet<Integer> B = new HashSet<Integer>();
        B.add(3);
        B.add(4);
        B.add(5);

        HashSet<Integer> C = new HashSet<Integer>();
        C.add(1);
        C.add(2);

        System.out.println(A.containsAll(B)); // false (A에 B의 모든 원소가 담겨있나? ㄴㄴ)
        System.out.println(A.containsAll(C)); // true (A에 C의 모든 원소가 담겨있나? ㅇㅇ)

        A.addAll(B); // B전체를 A에 add 한다
        A.retainAll(B); // 집합 A에도 있고 집합 B에도 있는 원소
        A.removeAll(B); // A에서 B를 뺐을 때 A에 남는 것

        Iterator hi = (Iterator) A.iterator();
        while (hi.hasNext()) {
            System.out.println(hi.next());
        }

    }

}

 

 

A.addAll(B);

결과로 1,2,3,4,5가 출력!

 

 

A.retainAll(B);

결과로 3이 출력

 

 

A.removeAll(B);

결과로 1,2 출력

 

 

 

5. Collection Interface

https://prashantgaurav1.files.wordpress.com/2013/12/java-util-collection.gif

 

Collection은 인터페이스 / Set과 List도 인터페이스

AbstractCollection은 클래스

 

 

 

6. iterator

반복자?

searching
java iterator api
 

Iterator (Java Platform SE 8 )

An iterator over a collection. Iterator takes the place of Enumeration in the Java Collections Framework. Iterators differ from enumerations in two ways: Iterators allow the caller to remove elements from the underlying collection during the iteration with

docs.oracle.com

import java.util.HashSet;
import java.util.Iterator;

public class SetDemo {
    public static void main(String[] args) {
        HashSet<Integer> A = new HashSet<Integer>();
        A.add(1);
        A.add(2);
        A.add(3);

        Iterator hi = (Iterator) A.iterator();
        while (hi.hasNext()) {
            System.out.println(hi.next());
        }

    }

}

HashSet 자리를 ArrayList로 변경 가능!

Collection<Integer> A = new HashSet<Integer>();

Collection으로도 변경 가능!

Collection interface 하위에 Set이랑 List가 있고, 그 아래에 관련 클래스들이 있어서.

결국에는 다 연결 연결.

뭔가 피라미드와 같은 느낌.

 

 

 

7. Map의 기본 사용법 1

Key - Value

Key는 중복 ㄴㄴ

Value 중복 ㅇㅇ

 

 

 

8. Map의 기본 사용법 2

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapDemo {
    public static void main(String[] args) {
        HashMap<String, Integer> a = new HashMap<String, Integer>();
        a.put("one", 1);
        a.put("two", 2);
        a.put("three", 3);
        a.put("four", 4);
        System.out.println(a.get("one"));
        System.out.println(a.get("two"));
        System.out.println(a.get("three"));

        IteratorUsingForEach(a);
        teratorUsingIterator(a);

    }

    static void IteratorUsingForEach(HashMap map) {
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }

    static void teratorUsingIterator(HashMap map) {
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        Iterator<Map.Entry<String, Integer>> i = entries.iterator();
        while (i.hasNext()) {
            Map.Entry<String, Integer> entry = i.next();
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }
    }
}

 

 

 

9. Collections의 사용법과 정렬

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

class Computer implements Comparable { // Comparable 인터페이스는 compareTo라는 메소드를 구현하는 것을 강제하고 있다
    int serial;
    String owner;

    Computer(int serial, String owner) {
        this.serial = serial;
        this.owner = owner;
    }

    public int compareTo(Object o) {
        return this.serial - ((Computer) o).serial;
    }

    public String toString() {
        return serial + " " + owner;
    }
}

public class CollectionsDemo {
    public static void main(String[] args) {
        List<Computer> computers = new ArrayList<Computer>();
        computers.add(new Computer(500, "egoing"));
        computers.add(new Computer(200, "leezche"));
        computers.add(new Computer(3233, "graphittie"));
        Iterator i = computers.iterator();
        System.out.println("before");
        while (i.hasNext()) {
            System.out.println(i.next());
        }
        // 정렬
        Collections.sort(computers); // Collections 는 class(정렬 등 여러 가지와 관련된 일을 처리 해주는 클래스), Collection 은 interface
        System.out.println("\nafter");
        i = computers.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }
}

 

 

sort
public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null);}

 

300x250