슬기로운 개발생활

[Java] ArrayList

by coco3o
반응형

ArrayList란?

ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트이다.

일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점 등이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어난다는 특징을 가지고 있다.


ArrayList 사용법

ArrayList 선언

ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다.
ArrayList<Student> members = new ArrayList<Student>();//타입설정 Student객체만 사용가능
ArrayList<Integer> num = new ArrayList<Integer>();//타입설정 int타입만 사용가능
ArrayList<Integer> num2 = new ArrayList<>();//new에서 타입 파라미터 생략가능
ArrayList<Integer> num3 = new ArrayList<Integer>(10);//초기 용량(capacity)지정
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1,2,3));//생성시 값추가

ArrayList 선언시 ArrayList list = new ArrayList()로 선언 후 내부에 임의 값을 넣고 사용할수도 있지만 이렇게 사용할경우
값을 뽑아내기 위해서는 캐스팅(Casting) 연산이 필요하고 잘못된 타입으로 캐스팅을 한 경우에는 에러가 발생하기에 위와 같은 방식은 추천하지 않는다.
ArrayList를 사용할시에는 ArrayList에 타입을 명시해주는것이 좋다. JDK 5.0 이후부터 자료형의 안정성을 위해 제네릭스(Generics)라는 개념이 도입되었다. ArrayList<String> list = new ArrayList<String>();이라고 되어있다면 String객체들만 add되어질 수 있고 다른 타입의 객체는 사용이 불가능하다.

제네릭스?선언할 수 있는 타입이 객체 타입이다. int는 기본 자료형이기 때문에 들어갈 수 없으므로 int를 객체화시킨 wrapper클래스를 사용해야 한다.

[Java] Wrapper클래스란?

 

[Java] Wrapper클래스란?

래퍼 클래스란(Wrapper Class)? 자바의 자료형은 크게 기본 타입(primitive type)과 참조타입(reference type)으로 나누어진다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은..

dev-coco.tistory.com


ArrayList 값 추가

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3); //값 추가
list.add(null); //null값도 add가능
list.add(1,10); //index 1뒤에 10 삽입
ArrayList<Student> members = new ArrayList<Student>();
Student student = new Student(name,age);
members.add(student);
members.add(new Member("홍길동",15));

ArrayList에 값을 추가하려면 ArrayList의 add(index, value) 메소드를 사용하면 된다.
index를 생략하면 ArrayList 맨 뒤에 데이터가 추가되며 index중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려난다.

출처 :&nbsp;https://coding-factory.tistory.com/551

이 경우 데이터가 늘어나면 늘어날수록 성능에 악영향이 미치기에 중간에 데이터를 insert를 해야할 경우가 많다면 ArrayList보다는 LinkedList를 활용하는것이 좋은 방법이다.

ArrayList 값 삭제

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

 

ArrayList 크기 구하기

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

 

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 값 검색

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


References : 이것이 자바다 15장 컬렉션 프레임워크
coding-factory.tistory.com/551

반응형

'📚Computer Science > Data structure' 카테고리의 다른 글

[Java] Vector  (0) 2021.05.10
[Java] LinkedList  (0) 2021.05.10
ArrayList와 LinkedList의 차이  (0) 2021.01.14
스택(Stack) & 큐(Queue)  (0) 2021.01.05
Array와 ArrayList의 차이  (0) 2021.01.05

블로그의 정보

슬기로운 개발생활

coco3o

활동하기