| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 의존주입
- MVC
- 생성자주입
- produces
- SpringBoot
- gradle
- @
- frontController
- @Valid
- application.properties
- 비즈니스레이어
- Model
- @RequestMapping
- jointpoint
- after-throwing
- c:if
- spring
- @ResponseBody
- .xml
- PointCut
- AOP
- 서비스레이어
- Java
- @RequestParam
- springmvc
- springjdbc
- 스프링
- 어노테이션
- 바인딩변수
- 유효성검사
- Today
- Total
메모장
[멘토씨리즈] 컬렉션 프레임 워크 본문
- 제네릭
자바의 제네릭은 데이터의 타입을 일반화 한다는 것을 의미한다. 클래스나 메서드 정의 시 일반화 하여 사용할 데이터 타입을 컴파일 할때 미리 지정하는 방법 이다. 제네릭을 사용하면 컴파일 할때 타입이 미리 정해지므로 타입 검사나 변환과 같은 번거로운 작업을 생략할 수 있으며 클래스나 메서드 내부에 사용될 데이터 타입의 안정성 높일 수 있다.
제네릭 선언
public class 클래스명<T>{...}
public interface 인터페이스명<T>{...}
클래스에 제네릭을 부여하면 해당 클래스를 선언할때 데이터 타입을 부여하게 된다. 그러면 객체를 생성할 때 타입이 지정된 부분이 대체 되어 해당 클래스는 지정된 객체만을 저장할 수 있게 되고 , 따로 타입을 변환할 필요없이 데이터를 출력할 수 있다. 또한 클래스를 사용해 다른 데이터를 저장 하고 싶다면 클래스를 다시 선언하여 원하는 데이터 타입을 부여한 후 사용하면 된다 . 제네릭을 이용하면 하나의 객체로 다양한 데이터를 사용할 수 있다.
ArrayList
ArrayList는 가장 많이 사용하는 List 인터페이스의 대표적인 구현 클래스 이다.
List <데이터 타입> list = new ArrayList <데이터 타입>();
제네릭 선언객체 제네릭
- ArrayList 데이터 저장
데이터를 추가하려면 add() 메서드를 사용한다. ex ) add(E e), add(int index, E e ) 메서드를 사용
E는 리스트 선언시 지정한 저장 데이터 객체를 의미 !
add() 로 데이터를 삽입하면 기존에 존재하는 마지막 데이터의 뒤에 차례대로 삽입된다.
삽입시에는 index가 부여되며 배열과 마찬가지로 순차적으로 부여 !
원하는 index 위치에 데이터를 삽입할 수 있다. 그러나 연속성 없이 순서를 부여해 삽입하는것은 불가능 !!
ex ) 데이터가 3개 있는 곳에 인덱스가 0,1 ,2 인데 갑자기 4번 인덱스 칸에 삽입 하려고 한다 ? xxx
데이터를 변경할 때는 set() 메서드를 사용한다. 변경을 원하는 index위치와 치환할 값 또는 객체를 지정하면 해당 위치의 값이 변경된다.
void set(int index, E value);
데이터를 삭제할 때는 remove() 메서드를 사용한다. 단지 데이터만 삭제되는 것이 아니라 해당 위치의 공간 까지 삭제 된다. 원하는 위치의 공간을 삭제 할 수 있고 빈 공백을 메우기 위해 뒤의 데이터들이 앞으로 이동 한다.
데이터를 얻을 때는 get() 메서드를 사용한다. 원하는 index 위치에 저장되어 있는 값을 출력 할 수 있다.
ex ) get(int index)
Set
Set 컬렉션은 객체의 저장 순서를 저장하지 않는다. List컬렉션은 데이터 저장시 중복을 허용하지만
★ Set 컬렉션은 데이터의 중복을 허용하지 않는다 . 또한 데이터를 저장할때 순서, 즉 index를 부여하지 않기 때문에, 데이터가 입력된 순서로 출력된다는 보장이 없다.
- HashSet
Set<E> set = new HashSet<E>();
Set<E> set = new HashSet<>();
HashSet 데이터 저장
데이터를 저장 할 때 순서 (index)를 부여하지 않고 , 데이터의 중복을 허용하지 않는다. 즉 , 동일한 값 또는 객체를 허용하지 않는다는 의미 ! 여기서 동일한 객체란 , 꼭 같은 타입의 인스턴스를 의미 하는것은 아니다. HashSet은 데이터를 객체의 hashCode() 값을 호출하여 비교하고 같으면 equals() 메서드를 호출하여 다시 비교해 두 객체가 같음을 증명 합니다 .
HashSet 데이터 삭제
List 컬렉션과 똑같이 remove() 메서드 사용. Set 컬렉션은 index가 존재하지 않으므로 순서에 의한 삭제는 지원하지 않는다.
'JAVA > [멘토씨리즈]' 카테고리의 다른 글
| [멘토 씨리즈] 파일 입출력 (0) | 2024.04.09 |
|---|---|
| [멘토 씨리즈] 스레드 (0) | 2024.04.09 |
| [멘토씨리즈] 예외처리 (0) | 2024.04.09 |
| [멘토 씨리즈] 다형성과 타입변환 (0) | 2024.04.09 |
| [과제] 멘토씨리즈 문제풀이 3 (0) | 2024.04.09 |