▶ 자바에서 컬렉션(Collection)이란?
: 컬렉션(Collection)은 자바에서 자료 구조를 구현한 클래스이다.
▶ 자바 컬렉션 프레임워크(Collection Framework) 구조
▶ 자바 컬렉션의 특징
- 자료구조로는 리스트(list), 스택(stack), 큐(queue), 집합(set), 등이 있다.
- 요소의 개수에 따라 크기 자동 조절
- 요소의 삽입, 삭제에 따른 요소의 위치 자동 이동
- 고정 크기의 배열을 다루는 어려움 해소
- 다양한 객체들의 삽입, 삭제, 검색 등의 관리 용이
- <> 제네릭을 이용해 저장될 데이터의 자료형을 정할 수 있다.
▶ 자바 컬렉션(Collrection) 리스트(List)
ArrayLIist
: 상당히 빠르고 크기를 마음대로 조절할 수 있는 배열
Vector
: ArrayList의 구형 버전으로 모든 메소드가 동기화 되어있음.
(요즘은 대부분 ArrayList를 사용한다고 한다.)
LinkedList
: 목록 끝에 원소를 추가하거나 끝에 있는 원소를 쉽게 제거할 수 있는 메소드 제공
스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임
▶ 자바 컬렉션(Collrection) 셋(Set)
HashSet
: 객체들이 순서 없이 저장되며 중복 저장하지 않음
TreeSet
: 정렬방법을 설정할 수 있음
▶ 자바 컬렉션(Collrection) 맵(Map)
HashMap
: 키(Key)와 값(value)의 쌍으로 구성되어 요소를 다루는 컬렉션, null값이 올 수 있음
TreeMap
: 정렬된 순서대로 키(Key)와 값(value)을 저장하여 검색이 빠름
▶ 자바 컬렉션(Collrection) 인터페이스에 선언된 추상 메소드
▶ 주요 컬렉션 예제 - ArrayList
import java.util.ArrayList;
//컬렉션 : 자바의 자료구조를 구현한 클래스
//배열과 유사한 다양한 배열 타입을 제공함
public class Ex13 {
public static void main(String[] args) {
//ArrayList객체
//<> 꺽새(제네릭)을 이용해 저장될 데이터의 자료형을 정할 수 있다
//꺽새 안쪽은 자료형 객체가 들어가야하므로, 랩퍼클래스로 쓰여야한다.
ArrayList<String> al = new ArrayList<String>();
//add : ArrayList 객체에 데이터를 저장하는 메소드이다
//ArrayList의 장점은 저장 순서대로 데이터가 출력된다는 점이다
al.add("구렁이");
al.add("팔렁이");
al.add("칠렁이");
al.add("구렁이");
al.add("구렁삼");
al.add("구렁사");
for(int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
System.out.println("============");
//확장 for문으로 출력해보기
for(String str : al)
System.out.println(str);
}
}
▶ 주요 컬렉션 예제 - Vector
import java.util.Vector;
public class Vector01 {
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(5);
v.add(4);
v.add(-1);
v.add(2, 100); //2 index에 100값 대입 2인덱스값은 3인덱스로 밀림
//size : 벡터 내부에 저장된 데이터 수
//Vector는 List계열이며 가변길이를 갖는 배열 객체
System.out.println("벡터 내의 요소 객체 수 : " + v.size());
//capacity : 벡터 내부 총 저장공간, 벡터는 변수의 개수가 증가함에 따라
//10개씩 저장공간을 늘리는 특징이 있다.
//데이터 저장공간을 별도로 정하지 않으면서도 정한 것과 같은 효과를 얻으려는 의도로 보인다.
System.out.println("벡터의 현재 총량 : " + v.capacity());
//벡터 내부에 저장된 데이터 출력
for(int i = 0; i < v.size(); i++) {
int n = v.get(i);
System.out.println(n);
}
int sum = 0;
for(int i = 0;i < v.size(); i++) {
//elementAt : 해당 번호에 저장된 데이터를 호출한다. get과 유사하다.
int n = v.elementAt(i);
sum += n;
}
System.out.println("벡터에 있는 정수의 합 : " + sum);
}
}
▶ 주요 컬렉션 예제 - HashMap
import java.util.HashMap;
import java.util.Scanner;
public class HashMap01 {
public static void main(String[] args) {
//Map 객체도 자료구조형의 한 종류이고
//키-값의 형태로 자료를 저장한다
//그렇기 때문에 저장된 변수의 번호나 이런 것들이 중요하지 않다
//HashMap 클래스는 대용량 자료를 검색하는데 뛰어난 능력을 발휘함
HashMap<String, String> dic = new HashMap<>();
//put 메소드를 활용해 키-값의 형태로 데이터를 저장한다.
dic.put("baby", "아기");
dic.put("love", "사랑");
dic.put("apple", "사과");
Scanner scanner = new Scanner(System.in);
//while 내부에 true를 써 무한루프를 만듬
while(true) {
System.out.print("찾고 싶은 단어는? :");
String eng = scanner.next();
//if문을 활용해 조건을 만족하면 while문을 탈출하고 종료
if(eng.equals("exit")) {
System.out.println("종료합니다");
break;
}
//영문명(키)을 통해 조회해 맞는 것이 있으면 한글(값)로 출력
//eng값을 가져왔는데 dic데이터에 없으면 null값이 kor에 저장됨.
String kor = dic.get(eng);
if(kor == null)
System.out.println(eng + "는 없는 단어입니다.");
else System.out.println(kor);
}
scanner.close();
}
}
'JAVA' 카테고리의 다른 글
[java] Set이란? (+HashSet, TreeSet 예제) (0) | 2022.04.03 |
---|---|
[java] Map예제 - map을 이용해 이름으로 전화번호 검색 하기 (0) | 2022.04.02 |
java 제네릭(Generic)이란? (0) | 2022.03.26 |
java 래퍼클래스(Wrapper class)란? (0) | 2022.03.24 |
java 인터페이스 interface (+추상클래스 차이점&유사점) (0) | 2022.03.20 |
댓글