hoon's bLog

Java ArrayList 선언, 추가, 삭제, 출력 본문

IT/Java

Java ArrayList 선언, 추가, 삭제, 출력

개발한기발자 2021. 1. 6. 12:15
반응형

안녕하세요.

이번 시간에는 ArrayList에 대해서 알아보도록 하겠습니다.

ArrayList란?

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

일반적인 배열과 같은 순차 리스트이며 인덱스로 내부의 객체를 관리한다는 점 등이 유사하지만,

한번 생성되면 크기가 변하지 않는 배열과는 달리,

ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면,

자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있습니다.

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에 타입을 명시해주는 것이 좋습니다.

제너릭스(Generics)라는 개념이 도입되었습니다.

ArrayList<String> list = new ArrayList<String>();

위와 같이 선언 시, String객체들만 add되어질 수 있고,다른 타입의 객체는 사용이 불가능합니다.

※ 제네릭스는 선언할 수 있는 타입이 객체 타입입니다.

int는 기본자료형이기 때문에 들어갈 수 없으므로 int를 객체화시킨 wrapper클래스를 사용해야 합니다.

(제네릭스에 대해서는 추후에 좀 더 자세하게 알아보도록 하겠습니다.)

ArrayList 값 추가

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

ArrayList<Student> list = new ArrayList<Student>();
Student student = new Student(name,age);
members.add(student);
members.add(new Member("홍길동",15));

ArrayList 값 삭제

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

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을 리턴합니다.

급하게 하다 보니 내용이 너무 부실했는데 이해가 되셨는지 모르겠습니다ㅠㅠ

당분간은 회사 야근이라는 핑계로 나태해질 것 같아요 ㅠㅠ...

야근 좀 마무리되면 여유 있는 마음으로, 초심 다잡고 포스팅 찾아뵙겠습니다.

이 하찮은 글 읽어주셔서 감사합니다:)

 

출처 : 자바의 정석 3rd Edition 내용 정리

728x90
반응형