JAVA

[JAVA] Collection : List, Set, Map

55yudi 2021. 8. 13. 17:30
maps.containsValue(value);

1. Java Collection의 주요 인터페이스 : List, Map, Set

    --> 필요한 때에 적절히 다르게 사용됨

    --> 인터페이스를 구분하는 가장 중요한 개념은 '순서', '데이터의 중복여부'


List : 순서 O, 데이터중복 O / add로 넣고 인덱스[]로 가져온다.

        List 인터페이스를 구현한 클래스 : ArrayList, AttributeList, LinkedList, Stack 등


Set : 순서 X, 데이터중복 X / 중복해서 관리하지 않도록 할 때 사용

        Set 인터페이스를 구현하는 클래스 : HashSet, Linked HashSet, TreeSet


Map : Key&Value 저장, Key중복 X, Value중복 O

        Map 인터페이스를 구현하는 클래스 : HashMap, TreeMap, LinkedHashMap, Hashtable

 

KeySet : 맵의 목록

 

 


List

List는 데이터를 순서에 맞게 일렬로 구성하는데, 인덱스가 부여되기 때문에 인덱스로 검색 가능하다.

Set과는 다르게 중복을 허용한다.

List 인터페이스의 메서드
List 인터페이스를 구현한 클래스

 

ArrayList

- ArrayList는 resizable-array임, 즉, 저장 용량이 자동으로 늘어난다.

  기본 생성자로 ArrayList를 생성하면 10개의 객체저장 용량을 기본으로 갖는다.

  처음부터 용량을 더 크게 잡고 생성할 수도 있다.

List myList = new ArrayList(100);
myList.add("person");
String name = (String)list.get(0);

- ArrayList는 Object타입으로 변환되어 저장되기 때문에, 모든 종류의 객체를 저장할 수 있다.

  그러나 저장/조회 시 Object로 변환해야 하므로 성능 효율이 떨어진다.

  이 점을 보완하려면 제네릭으로 해결

List<String> myList = new ArrayList<String>();
myList.add("person");
String name = list.get(0);

 

 

Set

Set은 중복된 요소를 포함할 수 있다.

List와는 다르게, 인덱스를 사용하지 않기 때문에 인덱스 매개변수가 없다.

Set 인터페이스의 메서드
Set 인터페이스를 구현하는 클래스

HashSet

- 해싱로직을 사용하여 객체를 저장한다. 중복 데이터는 저장하지 않는다.

- Sorting(타입에 따라 다르다.)

   * HashSet : 랜덤

Set<String> set1 = new HashSet<>();
set1.add("홍길동1");
set1.add("홍길동2");
set1.add("홍길동3");
System.out.println("HashSet 랜덤정렬 : " + set1);
HashSet 랜덤정렬 : [홍길동2, 홍길동1, 홍길동3]

 

   * LinkedHashSet : 입력 순서대로

Set<String> set2 = new LinkedHashSet<>();
set2.add("홍길동1");
set2.add("홍길동2");
set2.add("홍길동3");
System.out.println("LinkedHashSet 입력순으로 : " + set2);
LinkedHashSet 입력순으로 : [홍길동1, 홍길동2, 홍길동3]

 

 * TreeSet : comparator에 의해서

Set<String> set3 = new TreeSet<>();
set3.add("홍길동1");
set3.add("홍길동2");
set3.add("홍길동3");
System.out.println("TreeSet Comparator : " + set3);
TreeSet Comparator : [홍길동1, 홍길동2, 홍길동3]

 

Map

Map은 Key와 Value로 구성된 객체를 저장한다.

Key는 중복저장될 수 없다.

Map 인터페이스의 기본 메서드
Map 인터페이스를 구현하는 클래스

 

HashMap 기본 메서드

- HashMap 선언

Map<KeyType, ValueType> maps = new HashMap<KeyType, ValueType>();

- 값 추가

maps.put("key", value);

- 조회

map.get("key");

- Key 체크

maps.containsKey("key");

- Value 체크

maps.containsValue(value);

- forEach

maps.forEach(key, value) ···생략···);