오늘은 List를 배울 차례
지금까지 배열을 사용하면서 불편했던 기억이 있으실 겁니다.
크기가 고정되있다거나, 같은 타입만 저장이 가능했던 점 때문에 다들 불편했던 기억이 있을 텐데
그 단점을 보완하여 자바에서는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리하기 위해
각각의 자료구조들을 라이브러리로 추가해 놓았고
이 라이브러리들을 컬렉션 프레임워크라고 합니다.
대표적으로는 List, Set, Map, Stack, Queue 가 있고 순차적으로 한 번 살펴 봅시다.
이번 시간은 제목대로 List를 한 번 보겠습니다.
List
배열처럼 같은 형태의 데이터들을 저장할 수도 있고 index도 존재합니다.
여기까지는 배열과 다른 점은 존재하지 않지만
가장 큰 차이점으로는 크기를 지정해주지 않아도 된다는 점과 다양한 타입의 데이터를 저장할 수 있다는 점입니다.
즉, 정리해보자면
List 장점
1. 크기에 제약이 존재X
2. 다양한 타입의 데이터 저장 가능
사용형식
ArrayList sampleList = new ArrayList();
???? List를 사용한다고 하였는데 우린 지금 ArrayList를 사용했습니다.
그렇다면 ArrayList는 무엇일까요??
ArrayList
자 ArrayList 클래스로 한 번 가보겠습니다.
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
뭐가 보이시나요?
implements List<E> 가 보이시나요?
이제 뭔지 이해가 오시죠?
ArrayList는 인터페이스인 List를 상속받고 있습니다.
때문에 ArrayList로 List의 기능을 사용할 수 있는 것입니다.
List를 사용하지 않는 이유는 인터페이스는 말 그대로 설계도의 역할을 하기 때문입니다.
때문에, 그 설계도로 만들어진 ArrayList를 사용하는 것이죠
자 그럼 이제 ArrayList의 다양한 메소드를 보죠
1 : 마지막 위치에 객체를 추가 후 성공여부를 반환합니다. true/false
2 : 저장된 위치에 객체를 추가한다.
3 : 지정된 인덱스에 객체를 저장 후 기존 객체를 반환한다.
4 : 지정된 위치에 객체를 반환한다.
5 : 해당 List 의 사이즈를 Int로 반환합니다.
6 : 지정된 위치에 객체를 제거합니다.
자 다양한 메소드들을 알아보았는데 쓰여져 있는 것보다 훨씬 많습니다. 주로 사용하는 기능만 적었고 더 필요한 기능이 있나 궁금하시다면 ArrayList에 방문해보시기 바랍니다 ㅎㅎ
- 귀찮아 하는 사람들을 위해 제가 몇개 메소드 더 끄적이자면
contains(비교객체) : List에 '비교객체'가 있으면 true, 없으면 false 반환
indexOf(비교객체) : List에 비교객체가 있으면 '비교객체'가 있는 index 값을 반환한다.
toArray() : List 안의 데이터를 배열로 변환하여 반환한다.
자 그럼 이제 한 가지 고민이 생깁니다.
ArrayList는 어떤 타입이든 수용합니다. 아무 생각 없이 넣어줄 때는 편합니다.
하지만 수많은 데이터 속에서 내가 원할 때 꺼내 쓰려면???
벌써 머리가 아파옵니다.
때문에 우리는 제네릭 사이에 우리가 원하는 타입을 정해줄 수 있습니다.
제네릭? : <> 를 뜻합니다.
사용형식을 한 번 보죠
ArrayList<String> arrStr = new ArrayList<>();
ArrayList<Integer> arrInt = new ArrayList<>();
ArrayList<Long> arrLon = new ArrayList<>();
ArrayList<Character> arrChar = new ArrayList<>();
제네릭 사이에 타입을 지정함으로써 우린 원하는 타입만 저장할 수 있습니다.
근데 int가 아니라 Integer??
char 가 아니라 Character??
뭘까요?
제네릭 사이에는 래퍼 클래스 타입을 써줘야 한다는 걸 기억해주시기 바랍니다. 자주 실수하는 부분이니까요!!!
근데 래퍼가 뭐야?
이건 기본적인 사항이니 외워두시기 바랍니다.
자 그럼 오늘 배운거 정리
List, ArrayList, 제네릭, Wrapper
List list = new ArrayList<>(); !!!