컬렉션(Collection)은 자바에서 제공하는 자료구조를 담당하는 프레임워크(틀)
추가, 삭제, 정렬 등의 기능처리가 간단하게 해결 되어 자료구조적 알고리즘을 구현할 필요 없음
배열은 크기를 지정해야하고, 한번 지정된 크기 변경 불가하지만 컬렉션은 크기에 제약이 없다.
배열은 중간에 값을 추가, 삭제, 정렬 할 때 개발자가 직접 코드로 로직을 짜야한다.
하지만 컬렉션에서는 이미 자료구조적인 알고리즘이 내장되어있어 메소드 호출만으로 데이터를 효율적, 구조적 관리 가능하다
배열은 한가지 타입의 여러개 데이터를 보관 할 수 있다면, 컬렉션은 별도의 제네릭 설정을 하지 않을 경우 여러타입의 여러개 데이터 보관 가능하다.
Boolean, Character, Byte, Short, Integer, Long, Float, Double
// Ex) 예제
"10"
Integer.parseInt("10") => 10
"13.45"
Double.parseDouble("13.45") => 13.45
관련없는 것들 연결
공통된 메소드명을 제공해서 규약을 만듦
Java Collection : 자바의 자료구조 모음
List, Set의 중복코드 뽑아서 만든 인터페이스 => Collection
List -> 순서 O , 중복 O
Set -> 순서 X , 중복 X
Map -> 순서 X , 중복 X - (키 X , 값 O)
List 계열 주요 메소드
/** 메뉴 출력용 메서드
* alt + shift + j
* @author deokk91@gmail.com
*/
public class StudentService{
Scanner sc = new Scanner(System.in);
private List<Student> studentList = new ArrayList<Student>();
// 제네릭스(Generics) <> 하지 않으면 다운캐스팅 해줘서 불러와야 함
public StudentService() {
studentList.add(new Student("홍길동", 25, "서울시 중구", 'M', 90));
studentList.add(new Student("고영희", 23, "경기도 안산시", 'F', 100));
studentList.add(new Student("김아지", 30, "서울시 강남구", 'M', 80));
studentList.add(new Student("오미나", 27, "충북 청주시", 'F', 90));
studentList.add(new Student("박주희", 24, "서울 서대문구", 'F', 70));
}
//주로 사용하는 메서드
.add(E e) // boolean
.set(int index, E element) // E, 값 수정 후 기존 있던 값 반환
.get(int index) // E
.remove(int index) // E, 값 제거후 뒤쪽 요소를 한 칸씩 당겨오고, 기존 있던 값 반환
.isEmpty() // boolean
.size() // int
.contains(Object o) // boolean, 객체 포함 여부
// 향상된 for문
// std 의 사용자 정의 자료형 주의
for(Student std : studentList) {
// std에는 for문 반복 시 마다 0,1,2,... 인덱스 요소들을 한 번씩 저장됨.
System.out.print((index++) + "번 : ");
System.out.println(std);
}
}
저장 순서가 유지되지 않고, 중복 객체도 저장하지 못하게 하는 자료 구조
HashSet 작성 시
equals(), hashCode()가 오버라이딩 필수 확인!
Hash 함수 : 입력된 단어를 지정된 길이의 문자열로 변환하는 함수(중복X, 암호화)
// 주요 사용 메서드
Set<String> set = new HashSet<String>();
HashSet() : 중복 없이 데이터 저장(Set)하고 데이터 검색이 빠름(Hash)
// 주로 사용하는 메서드
set.add(String e) / boolean
set.remove(String e) / boolean
Set에 저장된 객체 중 매개변수 e와 필드값이 같은 객체를 제거 + Hash라는 단어가 포함된 Set이면 hashCode()도 같아야함.
set.size() / int
set.isEmpty() / boolean
hashCode() : 필드 값이 다르면 중복되지 않는 숫자를 만드는 메서드(검색용도)
HashSet() / 중복 없이 데이터 저장(Set)하고 데이터 검색이 빠름(Hash)
순서 없고, 중복 없음
LinkedHashSet / 요소가 추가된 순서대로 접근할 수 있다.
객체를 연결해 배열형태처럼 주소값 연결, 중복 제거
TreeSet() / 요소들의 정렬 방법을 직접 지정할 수 있다
트리 형태 자료구조 순서로 정렬, 중복 제거
Iterator<String> it = set.iterator();
while(it.hasNext())
String temp = it.next();
System.out.println(temp);
}
//위와 같은 형태
for(String temp : set) {
System.out.println(temp);
}