[Collection1] : List

이수보🧑🏻‍💻·2022년 1월 13일
0

초급

목록 보기
20/25

-List

오늘은 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의 다양한 메서드들

자 그럼 이제 ArrayList의 다양한 메소드를 보죠

  1. boolean ad = sampleList.add("add");
  2. sampleList.add("add");
  3. sampleList.set(index, "obj");
  4. sampleList.get(index);
  5. sampleList.size();
  6. sampleList.remove(index)

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??

뭘까요?

제네릭 사이에는 래퍼 클래스 타입을 써줘야 한다는 걸 기억해주시기 바랍니다. 자주 실수하는 부분이니까요!!!


근데 래퍼가 뭐야?

  • 기본 자료타입을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
  • 자바는 모든 기본타입은 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다
    byte : Byte
    short : Short
    int : Integer
    long : Long
    float : Float
    double : Double
    char : Character
    boolean : Boolean

이건 기본적인 사항이니 외워두시기 바랍니다.

자 그럼 오늘 배운거 정리

List, ArrayList, 제네릭, Wrapper

List list = new ArrayList<>(); !!!

0개의 댓글