배열과 컬렉션즈 프레임워크
배열 선언 시 배열이 가지고 있는 값을 지정해야 함 - 몇 개의 데이터가 있는지 알고 있을 때만 사용 가능함
String[] arryObj = new String[2];
arryObj[0] = "one";
arryObj[1] = "two";
arryObj[2] = "tree" // 오류 발생
// 배열 나열 방식
for(int i=0; i<arryObj.length; i++){
System.out.println(arryObj[i])
}
ArrayList의 사용법
생성할 때 몇 개의 데이터를 사용할 것인가 지정하지 않아도 됨
import java.util.ArrayList;
...
ArrayList<String> al = new ArrayList<String>(); // 제네릭 타입으로 String 으로 받아주면 String으로 저장됨
al.add("one");
al.add("two");
al.add("tree");
//add로 넣어준 데이터 타입이 기본적으로 Object타입으로 저장됨
// 배열 나열 방식
for(int i=0; i<al.size(); i++){ // size사용
String value = al.get(i); // get 저장한 값 가져오기
System.out.println(value)
}
컬렉션즈 프레임워크
컬렉션즈 프레임워크
배열은 크기가 고정되어 있는 데에 반해, 컬렉션 프레임워크는 가변적인 크기를 갖는 등의 특징을 가진다
또한 데이터 타입, 탐색, 정렬 등 편리한 API를 다수 제공한다.
컬렉션 프레임워크는 JDK 1.2 버전부터 java.util 패키지에서 지원한다.
- 이점
프로그램의 유지 보수를 쉽게 만들어준다
- List, Queue, Set, Map 등의 인터페이스를 제공, 이를 구현하는 클래스를 제공하려 일관된 API 를 사용할 수 있다.
- 가변적인 공간을 제공
- 이미 구현된 컬렉션 클래스를 목적에 맞게 선택해서 사용하면 된다
- 제공된 API의 코드는 검증되었으며, 고도로 최적화되어있다
2. 구성요소
- 인터페이스(interfaces) : 각 컬렉션을 나타내는 추상 데이터에 대한 인터페이스 (List, Set, Map 등). 클래스는 이 인터페이스를 구현하는 방식으로 작성되어 있기 때문에 상세 동작은 달라도 일관된 조작법으로 사용할 수 있다
- 클래스(Classes) : 컬렉션 별 인터페이스의 구현(Implementation). 같은 List 컬렉션이더라도 목적에 따라 ArrayList, LinkedList 등으로 상세 구현이 달라질 수 있다
- 알고리즘(Algorithms) : 컬렉션이 제공하는 연산, 검색, 정렬, 셔플 등에 대한 메서드
컬렉션즈 프레임워크 (컨테이너) 종류
- List : 인덱스 순서로 요소를 저장한다. 중복된 데이터를 저장할 수 있다.
- Set : 순서가 없으며, 데이터 중복을 저장할 수 없다. 집합 연산 (합집합, 교집합, 차집합 등) 을 지원한다.
- Map : Key-value 쌍으로 데이터를 저장한다. 순서가 존재하지 않으며, Key는 중복될 수 없다.
- Queue : 데이터가 저장된 순서대로 출력되는 선입선출의 구조를 갖는 선형 자료구조이다.
List , Queue , Set , Map 인터페이스로 구성
세부적으로 여러 클래스가 해당 인터페이스를 구현하거나, 다른 인터페이스가 상속받는 구조
HashSet
HashSet<Integer> a = new HashMap<Integer>();
a.add(1)
HashMap(Key-value)
HashMap<String, Integer> a = new HashMap<String, Integer>();
a.put("one",1);
System.out.pringln(a.get("one"));
'JAVA' 카테고리의 다른 글
[Java] 스트림 Stream (0) | 2024.05.04 |
---|---|
[Java] 람다식 Lambda Expression (0) | 2024.05.04 |
[Java] 인터페이스 interface (0) | 2024.05.04 |
[Java] 추상 클래스 abstract (0) | 2024.05.04 |
[Java] 싱글톤 패턴 (0) | 2024.05.04 |