Java

Java Collections Framework (List, Map...)

Dean83 2025. 9. 10. 13:15

자바에서도 C# 의 List 나 Dictionary 같은 자료형들이 존재한다. (C# 에 없는 자료형들도 있다) 이 내용을 정리하고자 한다. 

일단 크게, Collection 계열과 Map 계열로 나누어 진다. 

 

C#과의 차이점이라면, C# 에서는 List<String> 변수명 = new List<String>(); 처럼, 생성시 자료형이 일치하나, 

Java 에서는 그렇지 않다는 점이다. 정의 할 때에는 부모 자료형을 쓰고, 생성할때 자식 자료형으로 구체화 한다.

 

또한, Collections 항목을 사용할 때 에는 기본 자료형인 int, double 등을 쓸 수 없고, Integer, Double 등 null 이 포함될 수 있는 자료형을 사용해야 한다.

 

1. Collection 계열

  • List 계열과 Set 계열로 나누어 진다. 
    • List 계열에는 ArrayList, LinkedList 가 있다.
      • 중복을 허용한다. C#의 List 는 ArrayList 에 해당된다. 
    • Set 계열에는 HashSet 이 있다. 
      • 중복을 허용하지 않는다. 내부적으로는 Map 자료형 (C#의 Dictionary) 으로 동작한다
      • 추가되는 데이터들의 순서를 보장하지 않는다. 
    • List 에 중복된 항목을 add 하면 둘 다 추가가 되나, Set 에서는 중복된 항목을 덮어 쓰므로 1개만 존재한다.
    • 추가는 add 함수 호출로 동일하나, 일반적으로 [ ]로 항목을 접근하는 C#과 달리, get 함수를 통해 접근해야 한다.
  • 예제코드
//Collections 계열

...

List<String> testList = new ArrayList<String>();
testList.add("Hello");
String temp = testList.get(0);
testList.remove(0);

...

//Set

Set<String> setTest = new HashSet<String>();
//내부적으로 Map으로 동작한다. Map.put("Hello","Hello"); 로 동작하여
//중복된 키값을 갖는 값을 덮어 쓰거나 신규로 추가한다
setTest.add("Hello");

//중복된 항목을 add 하여도 List 처럼 List[0], List[1]에  Hello가 2개 있는것과 달리
//0 번 인덱스에 Hello 하나만 존재한다.
setTest.add("Hello);

 

 

2. Map 계열

  • Key - Value로 이루어진, C#의 Dictionary와 같은 개념이다. 
  • HashMap과 TreeMap이 있다.
  • 추가는 put 함수를 호출해서 추가한다.
    • put의 경우 기존 키값이 있으면 덮어쓴다. C#과 다른점이다. (C# 은 오류 발생)
  • 예제 코드
...
Map<String, Integer> mapTest = new HashMap<String, Integer>();
mapTest.put("key", 10);
Integer intVal = mapTest.get("key");
...

'Java' 카테고리의 다른 글

Atomic 자료형  (0) 2025.12.12
Optional.ofNullable 로 null-safe 처리 하기  (0) 2025.11.04
파일 쓰고, 읽기 예제  (0) 2025.10.02
Checked, Unchecked Exception  (0) 2025.10.01
Stream API  (0) 2025.09.10