Day23 - Generic 을 적용한 List ? , LinkedList

2021. 3. 18. 16:33JAVA 공부

이번에는 ArrayList를 이용한 메서드에서 매개변수, 반환유형은 어떻게 되는지 알아 봅시다

 

먼저, ArrayList를 매개변수로 받고 싶다면 이렇게 해주면 됩니다

List<Type> 이름 / Type에는 원하는 클래스 또는 데이터 타입을 넣어주면 됩니다

 

메서드의 반환유형으로 쓰고 싶다면 ?

매개변수로 받았던 것처럼 써주면 됩니다.

 

그리고 이제 ... 

<?> -> 어떠한 것이든 다 받을 수 있음

<? extends type> -> type 을 포함한 자식클래스를 받을 수 있음

<? super type> -> type 의 형태를 가질 수 있는 건 받을 수 있음

에 대해 알아 봅시다

 

예제를 통해서 확인해 봅시다

<?> -> 어떠한 것이든 다 받을 수 있음

 

<? extends type> -> type 을 포함한 자식클래스를 받을 수 있음

<? super type> ->  type 의 형태를 가질 수 있는 건 받을 수 있음

List의 기능

 

- addAll(Collection <? extends type>) -> Collention 형태의 type 복사

- asList(type[]) -> 배열을 리스트 형식으로 반환 

 

LinkedList

LinkedList 는 Queue 와 List 의 성질 2개를 다 가지고 있습니다.

LinkedList 는 값과, 다음값을 가리키는 주소 를 가지고 있습니다.

LinkedList 는 ArrayList 보다 삭제할 때 빠릅니다.

※ArrayList or 배열 에 1번째 값을 삭제하면, 뒤에 있는 값들을 땡겨서 가져오지만 LinkedList 는 다음 값을 가르키는 주소만 변경하면 되기 때문

 

List 에 담아준다면 List의 기능만을 ....

Queue 에 담아준다면 Queue의 기능만을 ...

LinkedList 에 담아준다면 둘 모두의 기능을 가지고 있습니다.

 

- add(type e) -> e 를 추가합니다

- toString() -> list의 값을 String 으로 반환합니다

- get(int index) -> index 번째 값을 가져옵니다

- addFirst(type e) -> e를 맨 앞에 추가 합니다

- addLast(type e) -> e를 맨 뒤에 추가 합니다

- push(type e) -> 메모리 구조상 맨 처음에 e를 추가합니다

- pop() -> 메모리 구조상 맨 처음에 있는 걸 꺼내오면서 삭제합니다

- peek() -> 메모리 구조상 맨 처음에 있는 걸 꺼내옵니다

Queue 가 FIFO (First in First out) 의 특성을 가지고 있기 때문에, 먼저 들어간 건 먼저 나와야 합니다

 

LinkedList 는 이해하려면 자료구조 및 메모리 에 대해서 알아야 한다고 합니다.

정확히 이해 하면 좋겠지만, 일단... LinkedList 는 다음 값의 주소를 가지고 있다는 것과, ArrayList 보다 삭제할 때 성능이 더 좋다는 것 정도만 알면 된다고 합니다

 

고생하셨습니다