•
데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조
•
파이썬에서는 리스트 타입이 배열 기능을 제공함
1.
배열은 왜 필요할까?
•
같은 종류의 데이터를 효율적으로 관리하기 위해 사용 ex)학교 특정 반의 학생들의 이름
•
같은 종류의 데이터를 순차적으로 저장
•
장점
◦
빠른 접근 가능
▪
첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근)
•
단점
◦
데이터 추가/삭제의 어려움
▪
미리 최대 길이를 지정해야 함
참고 : Primitive 자료형과 Wrapper 클래스
•
자바에서는 int와 integer 같이, Primitive 자료형과 Wrapper 클래스가 있음
•
Wrapper 클래스 - null을 용이하게 처리
2.
JAVA와 배열
•
java에서는 기본 문법으로 배열 지원 가능
◦
1차원 배열은 []를 통해 선언할 수 있음
◦
각 아이템은 {} 내에 콤마로 작성
•
배열의 전체 내용 출력 예
◦
System.out.println( Arrays.toString(data_list2) );
•
List와 ArrayList
◦
다음과 같이 List와 ArrayList 선언의 차이점
▪
List<Integer> list1 = new ArrayList<Integer>();
▪
ArrayList<Integer> list1 = new ArrayList<Integer>();
◦
List는 인터페이스이고, ArrayList는 클래스임
▪
클래스는 크게 일반 클래스와 클래스 내에 ‘추상 메서드’가 하나 이상 있거나, abstract로 정의된 추상 클래스로 나뉨
▪
인터페이스는 모든 메서드가 추상 메서드인 경우를 의미하며, 인터페이스를 상속받는 클래스는 인터페이스에서 정의된 추상 메서드를 모두 구현해야 함 (따라서 다양한 클래스를 상속받는 특정 인터페이스는 결국 동일한 메서드를 제공함)
▪
ArrayList 가 아니라, List로 선언된 변수는 다음과 같이 필요에 따라 다른 리스트 클래스를 쓸 수 있는 구현상의 유연성을 제공함
•
List<Integer> list1 = new ArrayList<Integer>();
•
list1 = new LinkedList<Integer>();
▪
다만, 본 자료구조/알고리즘에서는 굳이 동일 변수에 다양한 리스트 클래스를 쓸 필요는 없으므로, 최대한 동일한 클래스로 선언하기로 함.
•
ArrayList<Integer> list1 = new ArrayList<Integer>();