JAVA

ArrayList 정리

jojelly 2021. 1. 22. 18:12
반응형

ArrayList

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

배열과의 공통점

  • 순차리스트
  • 인덱스로 내부의 객체를 관리

배열과의 차이점

-배열- 

-크기가 고정되어 있다.

 

-ArrayList-

-객체들이 추가되어 저장 용량(capacity)을 초과시 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다.

-null값이 추가 가능하다. 

 

 

ArrayList 선언법

 

1
2
3
4
5
6
ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다.
ArrayList<Company> members = new ArrayList<Company>();//타입설정 Company객체만 사용가능
ArrayList<Integer> member1 = new ArrayList<Integer>();//타입설정 integer타입만 사용가능
ArrayList<Integer> member2 = new ArrayList<>();//new에서 타입 파라미터 생략가능
ArrayList<Integer> member3 = new ArrayList<Integer>(15);//초기 용량(capacity)지정, 기본 용량 : 8
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1,2,3));//생성시 동시에 값추가
cs

간단하게 첫번째 처럼  ArrayList list = new ArrayList()로 선언 후 내부에 임의의 값을 넣고 사용할수도 있지만, 이후

값을 뽑아내기 위해서는 캐스팅(Casting) 연산이 필요하며 잘못된 타입으로 캐스팅을 할 경우 에러가 발생한다.

때문에  ArrayList에 타입을 명시해주는것이 베스트이다. 

 

 

ArrayList 값 추가법

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

2번 라인과 같이 추가시 ArrayList 맨 뒤에 데이터가 추가된다.

3번 라인처럼 ArrayList의 add(index, value) 메소드를 사용하면 index중간에 값이 추가되고 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려나게 된다. 

1
2
3
4
ArrayList<Student> members = new ArrayList<Student>();
Student student = new Student(name,age);
members.add(student);
members.add(new Member("조젤리",11));
cs

위처럼 Student타입의 객체 넣을수도 있다. 

 

 

ArrayList 값 삭제 & 사이즈 구하기

1
2
3
4
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
list.remove(1);  //index 1 제거
list.clear();  //모든 값 제거
System.out.println(list.size()); //list의 (사이즈)크기 : 3
cs

2번 라인과 같이 remove()함수를 사용하여 특정 인덱스의 객체를 제거할 경우 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨지게 된다.

 

3번 라인과 같이  모든 값을 제거하려면 clear() 메소드를 사용하면 된다. 

 

4. ArrayList의 크기를 구하려면 ArrayList의 size() 메소드를 사용하면 된다. 

 

 

ArrayList 값 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3));
 
System.out.println(list.get(2));//0번째 index 출력
        
for(Integer i : list) { //for문을 통한 전체출력
    System.out.println(i);
}
 
Iterator it = list.iterator(); //Iterator 선언 
while(it.hasNext()){//다음값이 있는지 체크
    System.out.println(it.next()); //값 출력
}
cs

3번 라인과 같이 ArrayList의 get(index) 메소드를 사용하면 ArrayList의 원하는 index의 값이 리턴된다. 

예제의 경우 3이 출력된다. 

 

5번 라인은 for문을 통해 전체 값을 하나씩 출력한다. 

 

Iterator를 사용한 출력방법도 있는데 보통은 for 문을 통해 ArrayList 를 출력한다. 

 

ArrayList 값 검색

1
2
3
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
cs

ArrayList의 contains(value) 메소드를 사용시 값이 있다면 true가 리턴, 값이 없다면 false가 리턴된다.

indexOf(value) 메소드를 사용할 겨우 해당 값이 있는 index를 반환하고, 값이 없다면 -1을 리턴합니다.

반응형