자바에서도 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 함수를 통해 접근해야 한다.
- List 계열에는 ArrayList, LinkedList 가 있다.
- 예제코드
//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 |