Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

봄디의 개발일지

[JAVA] ArrayList 자주 사용하는 메소드 (List/LinkedList) 본문

자바

[JAVA] ArrayList 자주 사용하는 메소드 (List/LinkedList)

bomdy 2024. 10. 6. 20:53

ArrayList 에 대한 설명은 아래의 게시물에서 확인할 수 있습니다. 

2024.10.06 - [자바] - [JAVA] 컬렉션 - List 정리 (ArrayList, LinkedList)

 

[JAVA] 컬렉션 - List 정리 (ArrayList, LinkedList)

1️⃣ List 란 ?List 란 순서가 있고, 중복을 허용하는 자료 구조를 말합니다. List 인터페이스는 ArrayList, LinkedList 와 같은 여러 구현 클래스를 가지고 있습니다.  이제, ArrayList 와 LinkedList 에 대해

bomdy.tistory.com

이 글에서는 ArrayList 로 예를 들어 설명하지만 List 인터페이스의 주요 메서드이며 LinkedList 에서도 동일하게 사용 가능합니다.

1️⃣ ArrayList 메소드 정리

  • add (E e) 
  • add (int index, E element)
  • get (int index)
  • set (int index, E element)
  • remove (int index)
  • indexOf (Object o)
  • lastIndexOf (Object o)
  • contains(Object o)
  • size()
  • isEmpty()
  • clear()

✅ add (E e) : 리스트의 끝에 지정된 요소를 추가한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println(list); // [1,2,3]
    }

 

위의 코드와 같이 add 할 경우, 뒤에서부터 차례대로 1,2,3 의 값이 들어가는 것을 확인할 수 있습니다. 

 

✅ add (int index, E element) : 리스트의 지정된 위치에 요소를 삽입한다.  

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2, 10); //인덱스 2의 위치에 10을 추가 [1, 2, 10, 3]
        list.add(0, 20); //인덱스 0의 위치에 20을 추가 [20, 1, 2, 10, 3]
        System.out.println(list); // [20, 1, 2, 10, 3]
    }

 

단순히 맨 뒤에 추가할 수 있는 add 와는 다르게 인덱스의 위치를 지정해서 값을 추가해줄 수 있습니다.

 

✅  get (int index) : 리스트에서 지정된 위치의 요소를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2, 10); //인덱스 2의 위치에 10을 추가 [1, 2, 10, 3]
        list.add(0, 20); //인덱스 0의 위치에 20을 추가 [20, 1, 2, 10, 3]

        System.out.println(list.get(2)); //인덱스 2의 위치에 있는 값 반환 2
        System.out.println(list.get(0)); //인덱스 0의 위치에 있는 값 반환 20
    }

 

해당 인덱스에 저장되어 있는 값을 반환합니다.

위의 예에서는 list 에 [20, 1, 2, 10, 3] 이 들어있기 때문에 인덱스 2 위치에 있는 2 와 인덱스 0 위치에 있는 20을 반환합니다.  

get 은 단순히 값만 반환할 뿐 list 에 값에는 영향을 주지 않습니다. 

 

✅ set (int index, E element) : 지정된 위치의 요소를 변경하고, 이전 요소를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5); // [1, 2, 3, 4, 5]

        int number = list.set(0, 30); 
        System.out.println(number); // 1
        System.out.println(list); //[30, 2, 3, 4, 5]
    }

 

기존 list 에는 [1, 2, 3, 4, 5] 가 들어가있는데, set 을 통해서 기존 0번 인덱스의 값을 30으로 바꾸고

원래 0번 인덱스에 있었던 값인 1을 반환합니다. 

따라서 number 에는 1 의 값이 들어있고, list 는 [30, 2, 3, 4, 5] 로 변하게 됩니다. 

 

✅ remove (int index) : 리스트에서 지정된 위치의 요소를 제거하고 그 요소를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5); // [1, 2, 3, 4, 5]

        int number = list.remove(1);
        System.out.println(number); // 2
        System.out.println(list); //[1, 3, 4, 5]
    }

 

remove() 는 지정한 인덱스 위차에 있는 값을 삭제하고, 반환합니다.

따라서 number 에는 인덱스 1의 위치에 있던 2 를 제거하고 반환합니다. 

최종적으로 list 는 [1, 3, 4, 5] 로 변하게 됩니다. 

 

✅ indexOf (Object o) : 리스트에서 지정된 요소의 첫 번째 인덱스를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(30);
        list.add(30);
        list.add(40);
        list.add(50); // [10, 20, 30, 30, 30, 40, 50]

        int number = list.indexOf(30);
        System.out.println(number); // 2
        System.out.println(list); // [10, 20, 30, 30, 30, 40, 50]
    }

 

list 에는 30이라는 값이 3개가 존재하지만, indexOf () 는 지정된 요소의 첫 번째 인덱스를 반환하므로

제일 먼저 30이 있는 위치인 인덱스 2가 반환되는 것을 확인할 수 있습니다.

indexOf () 는 인덱스의 위치만 반환할 뿐 list 내부 값의 변화는 없습니다. 

 

✅ lastIndexOf (Object o) : 리스트에서 지정된 요소의 마지막 인덱스를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(30);
        list.add(30);
        list.add(40);
        list.add(50); // [10, 20, 30, 30, 30, 40, 50]

        int number = list.lastIndexOf(30);
        System.out.println(number); // 4
        System.out.println(list); // [10, 20, 30, 30, 30, 40, 50]
    }

 

lastIndexOf () 는 지정된 요소의 마지막 인덱스를 반환합니다. 30 이라는 값은 인덱스 2,3,4 번에 존재하므로 lastIndexOf(30) 을 할 경우에는 마지막 인덱스인 4를 리턴하는 것을 확인할 수 있습니다.

 

✅ contains (Object o) : 리스트가 지정된 요소를 포함하고 있는지 여부를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        boolean check = list.contains(4);
        System.out.println(check); // true

        check = list.contains(10);
        System.out.println(check); //false
    }

 

list 에는 4 라는 값이 존재하므로 contains() 를 실행할 경우 true 가 나오는 것을 확인할 수 있습니다.

반면에, list 는 10 이라는 값이 없으므로 contains() 를 실행하면 false 가 나오게 됩니다.

 

✅ size () : 리스트의 요소 수를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(40);
        list.add(50); // [10, 20, 30, 40, 50]

        int size = list.size();
        System.out.println(size); // 5
    }

 

size() 는 리스트의 있는 요소 수를 반환합니다. 

만약, 리스트에 아무 값도 들어가있지 않은 상태라면 0 을 반환합니다. 

 

✅ isEmpty() : 리스트가 비어있는지의 여부를 반환한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();

        boolean check = list.isEmpty();
        System.out.println(check); //true

        list.add(1);
        list.add(2);
        list.add(3);

        check = list.isEmpty();
        System.out.println(check); //false
    }

 

처음에 list 에 아무 값도 넣지 않고 isEmpty() 를 호출했을 때는 list 가 비어있으므로 true 를 리턴하는 것을 확인할 수 있습니다. 

후에,  list 에 값을 3개를 추가하고 isEmpty() 를 호출하면 list 에 값이 있으므로 false 를 리턴하는 것을 확인할 수 있습니다.

 

✅ clear() : 리스트에서 모든 요소를 제거한다. 

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        list.clear();
        System.out.println(list); // []
    }

 

 list 에 값을 5개를 넣고 clear() 를 실행할 경우 모든 요소를 제거하므로 list 에는 아무 값도 남아있지 않는 것을 확인할 수 있습니다. 

 


🔍 참고글

인프런 [김영한의 실전 자바 - 중급 2편]  섹션 6 컬렉션 프레임워크 - List 강의를 참고하여 작성했습니다.