항해99 5~6일차 개발일지

홍당무·2022년 11월 20일
0

Java ArrayList 사용방법

ArrayList

ArrayList는 자바의 List 인터페이스를 상속받은 여러 클래스 중 하나이다. 일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작한다.

배열과의 차이점은 배열은 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변한다. 내부적으로 저장이 가능한 메모리 용량(Capacity)가 있으며 현재 사용 중인 공간의 크기(Size)가 있다. 만약 현재 가용량 이상을 저장하려고 할 때 더 큰 공간의 메모리를 새롭게 할당한다.

ArrayList의 생성은 다음과 같은 구문으로 생성한다.

보통 생성할 때는 new ArrayList<>()와 같이 타입을 생략해서 작성한다. ArrayList를 생성할 때 Set이나 다른 ArrayList를 전달하면 해당 Collections의 값들로 초기화된다. 끝으로 가변 인자를 전달 받는 Arrays.asList()를 사용하면 기본 값들로 생성 할 수 있다.

ArrayList 엘레멘트 추가/변경은 ArrayList를 생성한 후 add() 메소드로 엘레멘트를 추가할 수 있다. 또한 set()메소드로 기존에 추가된 값을 변경하는 것도 가능하다.

add()는 기본적으로 리스트의 가장 끝에 값을 추가한다. 별로도 인덱스를 지정하면 해당 인덱스에 값이 추가되고 그 인덱스부터의 값들이 1칸씩 밀린다.

ArrayList 엘레멘트 삭제는 remove() 메소드를 호출한다.

삭제할 떄는 엘레멘트의 인덱스를 입력하거나 엘레멘트를 직접 입력할 수 있다. 인덱스를 통해 삭제할 경우 삭제되는 엘레멘트를 리턴받을 수있다. 값을 지움과 동시에 해당 값으로 별도의 작업이 필요한 경우 리턴을 받아서 사용하면 된다.ArrayList 안의 내용을 전체 삭제할 때는 clear()를 호출하면 된다.

ArrayList 전체 값 확인을 하기 위해 ArrayList의 모든 값들을 순회해서 출력하고 싶은 경우 다양한 방법이 있다.

for-each 반복문으로 각각의 값을 순회해서 출력하는 것이 가능하다. 또한 get()메소드로 각 인덱스의 값을 순차적으로 탐색하는 방법도 가능하다. 그리고 iterator나 listIterator를 통해 값들을 순회하는 것도 가능하다. listIterator의 경우 생성 시 ArrayList의 크기를 입력해주고 역방향으로 출력할 수 있다.

ArrayList의 안에 값이 존재하는지 존재한다면 어느 위치에 존재하는지 알고 싶은 경우가 있다. 먼저 값이 존재하는지만 알고 싶은 경우, contains()를 사용한다. 값이 존재할 때 어느 위치에 존재하는지 알고 싶은 경우 indexOf()를 사용할 수 있다.

contains()는 값이 있는 경우 true를, 값이 없는 경우 false를 리턴한다. indexOf()는 값이 존재하는 경우 해당 엘레멘트의 인덱스를 리턴한다. 값이 존재하지 않을 경우 -1을 리턴하기 떄문에 별도로 처리가 가능하다.

Arrays.stream()

Arrays.stream(array, int a1, int a2)이면 a1부터 (a2-1)까지의 요소를 가져올 수 있다.

Arrays.stream(array).filter(요소->조건)가 들어간다.

profile
공부하는 백엔드 개발자

0개의 댓글