JAVA - Collection

김수연·2022년 11월 7일
0

JAVA

목록 보기
3/5

Java 컬렌션 프레임워크의 상속구조

컬렉션이란?

컬렉션은 객체의 그룹을 표현하는 객체
컬렉션은 java.util.Collection 인터페이스를 상속 받는 여러 인터페이스들이 있다.
대표적으로 List, Set, Queue가 있다.

Collection 인터페이스의 특징

인터페이스구현클래스특징
SetHashSet, TreeSet순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
ListLinkedList, Vector, ArrayList순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
QueueLinkedList, PriorityQueueList와 유사
MapHashtable, HashMap, TreeMap키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.
  1. Set 인터페이스

순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

HashSet

  • 가장빠른 임의 접근 속도
  • 순서를 예측할 수 없음
  • NULL 요소 삽입을 허용

Ex)

import java.util.*;
public class HashSetEx {
    public static void main(String args[])
    {
        // HashSet 선언 및 데이터 입력
        HashSet<String> hash = new HashSet<String>();
  
        hash.add("Hello");
        hash.add("World");
        hash.add("Hello");
        hash.add("JAVA");
        hash.add("Funny");
  
        // Traversing elements
        Iterator<String> itr = hash.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}

출력결과

Hello
Funny
World
JAVA

TreeSet

  • 정렬방법을 지정할 수 있음
  1. List 인터페이스

순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.

LinkedList

  • 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
  • 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임

Vector

  • 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음

ArrayList

  • 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남

Ex)

import java.io.*;
import java.util.*;
  
class ArrayList {
    public static void main(String[] args)
    {
  
        // ArrayList 선언
        ArrayList<Integer> arrayli
            = new ArrayList<Integer>();
  
        // ArrayList에 데이터 입력
        for (int i = 1; i <= 5; i++)
            arrayli.add(i);
  
        // 결과 출력
        System.out.println(arrayli);
  
        // 3번 데이터 제거
        arrayli.remove(3);
  
        // 결과 출력
        System.out.println(arrayli);
  
        // 하나씩 가져와서 결과 출력
        for (int i = 0; i < arrayli.size(); i++)
            System.out.print(arrayli.get(i) + " ");
    }
}

출력결과

[1, 2, 3, 4, 5]
[1, 2, 3, 5]
1 2 3 5
  1. Map 인터페이스

키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로,

순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.

Hashtable

  • HashMap보다는 느리지만 동기화 지원
  • null불가

HashMap

  • 중복과 순서가 허용되지 않으며 null값이 올 수 있다.

TreeMap

  • 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름

Ex)

import java.util.*;
public class HashMapEx {
    public static void main(String args[])
    {
        // HashMap 선언 및 데이터 입력
        HashMap<Integer, String> hm
            = new HashMap<Integer, String>();
  
        hm.put(1, "Hello");
        hm.put(2, "World");
        hm.put(3, "JAVA");
  
        // 첫 번째 결과 출력
        System.out.println("1" + hm.get(1));
  
        // 전체 결과 출력
        for (Map.Entry<Integer, String> e : hm.entrySet())
            System.out.println(e.getKey() + " " + e.getValue());
    }
}

출력결과

1 Hello
1 Hello
2 World
3 JAVA
profile
Su Yeon

0개의 댓글