ArrayList

0

자바

목록 보기
14/17

ArrayList란??

  • List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트
  • 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는 점이 유사하지만, 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어남
  • ArrayList에서 특정 인덱스의 객체를 제거하게 되면, 제거한 객체의 인덱스부터 마지막 인덱스까지 모두 앞으로 1칸씩 앞으로 이동, 추가 시 뒤로 1칸씩 이동
  • 인덱스 값을 유지하기 위해서 추가/삭제 시 전체 객체 위치가 이동
  • 잦은 원소의 이동, 삭제가 발생할 경우 ArrayList보다 LinkedList 사용이 나음

배열과 ArrayList의 차이

  • 배열은 크기가 고정되어있지만 arrayList는 사이즈가 동적인 배열
  • 배열은 primitive type(int, byte, char..)과 object 모두를 담을 수 있지만, arrayList는 타입 안정성을 보장해주는 제네릭을 사용할 수 있다
제네릭이란??
- 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룬다
- 타입에 대해 유연성과 안정성을 확보한다
- 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술이다
List<Interger> list1 = new ArrayList<>();
  • 길이에 대한 배열은 length 변수를 쓰고, arrayList는 size() 메소드를 씀
  • 배열은 elements들을 할당하기 위해 assignment 연산자를 써야하고, arrayList는 add()메서드를 통해 element를 삽입

ArrayList Method

추가 : add()

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1); //값 추가
list.add(null); //null값도 추가가능
list.add(5,10); //index 5뒤에 10 삽입

추가 : remove()

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
list.remove(1);  //index 1 제거
list.clear();  //모든 값 제거

크기 : size()

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
System.out.println(list.size()); //list 크기 : 3

크기 : size()

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()); //값 출력
}

값 검색 : cotains() 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

정렬 : sort()

ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
Collections.sort(list);// Collections.sort() 메소드를 이용한 요소의 정렬
profile
목적지가 있는 개발자 백재원입니다.

0개의 댓글