Java/자바 [15일차] (1)-컬렉션 프레임워크 , List
🌍글을 읽기 전 필자는 아직 코딩을 배우는 단계이므로 글의 내용이 부정확할 수 있습니다.
여러 가지 글과 책, 수업을 바탕으로 정리한 내용이니 알맞지 않은 내용이 있다면 댓글 남겨주시면 수정하겠습니다.
컬렉션 프레임 워크(Collection FrameWork)
컬렉션 프레임 워크란 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록
인터페이스와 구현 클래스를 java.util패키지에서 제공합니다.
이들을 모두 모아 컬렉션 프레임 워크라 부릅니다.
컬렉션은 객체의 저장을 뜻하며
프레임 워크는 사용방법을 정해놓은 라이브러리를 말합니다.
컬렉션 프레임 워크의 종류
컬렉션 프레임워크의 주요 인터페이스에는
List, Set, Map이 있습니다.
List컬렉션
List 컬렉션은 배열과 비슷하게 객체를 인덱스로 관리합니다.
배열과 다른 점은 배열의 길이는 정적이므로
길이를 한 번 선언할 때 정하면 바뀔 수 없지만
List컬렉션은 길이가 자동으로 증가하며, 객체를 저장할 때 자동으로 인덱스가 부여됩니다.
그리고 추가, 삭제, 검색을 위한 다양한 메서드가 존재합니다.
List컬렉션의 객체 저장
List컬렉션은 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조합니다.
따라서 동일한 객체를 중복 저장할 수 있는데, 이 경우에는 동일한 번지를 참조합니다.
List컬렉션의 종류
List 컬렉션에는 ArrayList,Vector,LinkedList등이 있습니다.
List컬렉션의 메서드
메서드 | 설명 |
add(int index,E elem) | index 위치에 elem추가 |
get(int index) | index 위치에 있는 요소 반환 |
indexOf(Object o) | 요소 o가 있는 위치 반환 |
remove(int index) | index 위치 요소 삭제 후 삭제값 반환 |
set(int index,E elem) | index위치 요소를 elem으로 변경 |
ArrayList
ArrayList는 List 인터페이스의 대표적인 구현 클래스입니다.
ArrayList 객체 생성
List<E> list = new ArrayList<E>();
<E>는 저장할 객체의 타입을 넣어줍니다.
Integer타입으로 한번 ArrayList객체를 생성해보겠습니다.
List<Integer> list = new ArrayList<Integer>( );
List<Integer> list = new ArrayList<>( );
두 번째 줄처럼 ArrayList의 E타입 파라미터를 생략하면 왼쪽 List에 지정된 타입을 따라가겠다는 말입니다.
첫 번째 줄 두 번째 줄 둘 다 가능한 방법입니다.
위의 예시처럼 ArrayList객체를 생성하면 내부에 10개의 객체를 저장할 수 있는 초기 용량을 갖게 됩니다.
저장되는 객체 수가 초기 용량인 10개를 넘어서면 용량이 자동적으로 증가합니다.
ArrayList에 객체가 추가, 삭제되는 과정
ArrayList에 객체를 추가하면 0번 인덱스부터 차례대로 저장됩니다.
ArrayList에서 특정 인덱스의 객체를 제거한다면 바로 뒤 인덱스부터
마지막 인덱스 까지 전체적으로 1씩 당겨집니다.
위와 마찬가지로 특정 인덱스에 객체를 삽입하면
해당 인덱스부터 마지막 인덱스까지 1씩 밀립니다
ArrayList객체 생성 및 메서드 사용해보기
ArrayList 객체 생성
List<Integer> list= new ArrayList<>();
add( )메서드로 데이터 저장
//데이터를 리스트에 저장 : add 메서드
list.add(45); list.add(23); list.add(7); list.add(21);
list.add(19); list.add(11); list.add(44);
add( )메서드로 지정한 인덱스 위치에 데이터 삽입
//지정한 인덱스 위치에 데이터를 삽입.
list.add(2, 13); //인덱스 2번에 13값 넣음
size( )메서드로 ArrayList크기 확인
System.out.println("리스트의 크기:"+list.size()); //List에서 크기는 size( )메서드 리턴 타입 int
//출력 결과 :리스트의 크기:7
get( )메서드로 인덱스 위치의 값 확인
System.out.println("인덱스 2번 요소 확인: "+list.get(2));
System.out.println("인덱스 3번 요소 확인: "+list.get(3));
//출력 결과:인덱스 2번 요소 확인: 13
//인덱스 3번 요소 확인: 7
remover( )메서드로 인덱스 위치의 값 삭제
list.remove(4);
list.remove(4);
contains( ), indexOf( ) 메서드로 데이터 요소 찾기
//contains( )메서드
System.out.println("11의 여부 :"+list.contains(11)); //11의 여부 :true
System.out.println("19의 여부 :"+list.contains(19)); //19의 여부 :false
//indexOf( )메서드
System.out.println("11의 인덱스:"+list.indexOf(11)); //11의 인덱스:4
System.out.println("19의 인덱스:"+list.indexOf(19)); //19의 인덱스:-1