ArrayList란?
ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트이다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다.
ArrayList에서 특정 인덱스의 객체를 제거하게 되면, 제거한 객체의 인덱스부터 마지막 인덱스까지 모두 앞으로 1칸씩 앞으로 이동한다. 객체를 추가하게 되면 1칸씩 뒤로 이동하게 된다. 인덱스 값을 유지하기 위해서 추가/삭제 시 전체 객체가 위치가 이동한다.
따라서 잦은 원소의 이동, 삭제가 발생할 경우 ArrayList보다 LinkedList를 사용하는 것이 좋다.
배열과 ArrayList의 차이
- 배열은 크기가 고정되어있지만 arrayList는 사이즈가 동적인 배열이다.
- 배열은 primitive type(int, byte, char 등)과 object 모두를 담을 수 있지만, arrayList는 타입 안정성을 보장해주는 제네릭을 사용할 수 있다.
- 길이에 대해 배열은 length 변수를 쓰고, arrayList는 size() 메서드를 써야한다.
- 배열은 element들을 할당하기 위해 assignment(할당) 연산자를 써야하고, arrayList는 add() 메서드를 통해 element를 삽입한다.
ArrayList 함수정리
ArrayList 의 추가 : add()
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1); //값 추가
list.add(null); //null값도 추가가능
list.add(5,10); //index 5뒤에 10 삽입
ArrayList에 값을 추가하려면 ArrayList의 add(index, value) 메소드를 사용하면 된다. index를 생략하면 ArrayList 맨 뒤에 데이터가 추가되며 index중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려난다.
데이터가 늘어날 수록 성능에 악영향이 미치기에 중간에 데이터를 insert를 해야할 경우가 많다면 ArrayList보다는 LinkedList를 활용.
ArrayList 값 삭제 : remove()
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
ArrayList에 값을 제거하려면 ArrayList의 remove(index) 메소드를 사용
remove()함수를 사용하여 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다.
모든 값을 제거하려면 clear() 메소드를 사용.
ArrayList 크기 구하기
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.size()); //list 크기 : 3
ArrayList의 크기를 구하려면 ArrayList의 size() 메소드를 사용하면 된다.
ArrayList 값 출력
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.get(0));//0번째 index 출력
for(Integer i : list) { //for문을 통한 전체출력
System.out.println(i);
}
Iterator iter = list.iterator(); //Iterator 선언
while(iter.hasNext()){//다음값이 있는지 체크
System.out.println(iter.next()); //값 출력
}
ArrayList의 get(index) 메소드를 사용하면 ArrayList의 원하는 index의 값이 리턴.
전체출력은 대부분 for문을 통해서 출력을하고 Iterator를 사용해서 출력을 할수도 있다.
ArrayList 값 검색 : contains() - 값 존재유무, indexOf() - 값 인덱스 출력
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.contains(1)); //list에 1이 있는지 검색 : true
System.out.println(list.indexOf(1)); //1이 있는 index반환 없으면 -1
ArrayList에서 찾고자 하는 값을 검색하려면 ArrayList의 contains(value) 메소드를 사용하면 된다.
만약 값이 있다면 true가 리턴되고 값이 없다면 false가 리턴.
값이 있는 index를 찾으려면 indexOf(value) 메소드를 사용하면 되고 만약 값이 없다면 -1을 리턴한다.
ArrayList 정렬 : sort()
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
Collections.sort(list);// Collections.sort() 메소드를 이용한 요소의 정렬
'Java & Spring' 카테고리의 다른 글
java maven을 gradle로 변환 (0) | 2023.09.24 |
---|---|
java LinkedList 정리 (0) | 2021.08.21 |
java 서블릿 개념정리 (0) | 2021.08.16 |
java 웹 서버 및 WAS 개념정리, 차이점 (0) | 2021.08.16 |
java int to char 형변환 (0) | 2021.08.15 |