JAVA/Data Structure

[JAVA] 배열(Array)과 ArrayList

빅콜팝 2022. 10. 13. 03:10
728x90
반응형
동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조를 배열(Array)이라고 한다.

 

1. 배열은 왜 사용할까?


- 같은 종류의 데이터를 효율적으로 관리 가능하다.
- 같은 종류의 데이터를 순차적으로 저장한다.

장점

- 빠른 접근 가능
: 첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근)

단점

- 데이터 추가/ 삭제의 어려움
: 미리 최대 길이를 지정해야한다.
-> 길이를 모르는 경우에는 배열이 아닌 Collection 객체의 ArrayList를 사용하여 해결한다.

1_2. 변수 선언 시 사용되는 자료형


Primitive(원시) 자료형 / Wrapper 클래스

Primitive type Wrapper Class
byte Byte
short Short
int Integer
long Long
double Double
char Character
float Float
boolean Boolean

Wrapper 클래스의 장점
- null 처리 용이하게 가능하다.
- ArrayList 등 객체만을 핸들링 하는 기능 사용 용이하다.

tip : wrapper 클래스의 값은 내부의 값을 저장하는 것이 아닌 참조 주소를 비교하기 때문에 == 연산자의 사용이 불가능하며, equals()같은 메소드를 사용해야한다.

2. 배열 선언 및 초기화


// new 키워드를 사용해서 배열을 미리 선업하고, 데이터 넣기
Integer list = new Integer[5];
list[0] = 5;

// 배열 선언과 동시에 데이터 넣기
Integer[] list2 = {1,2,3,4,5};

// 배열의 내용을 출력하기 위해 Arrays.toString(배열변수) 메소드 사용
System.out.printLn(Array.toString(list2));

 

3. ArrayList


- ArrayList 클래스는 내부적으로 배열을 이용하여 요소를 저장한다.
- List는 빈 공간을 허용하지 않는다.

장점

- 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다.

단점

- 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 과정을 거친다.
즉, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어진다.

 

3_1. List와 ArrayList 차이


List<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();

 

List는 인터페이스고, ArrayList는 클래스이다.

- 클래스는 크게 일반 클래스와 클래스 내에 '추상 메소드'가 하나 이상 있거나, abstract로 정의된 추상 클래스로 나뉜다.
- 인터페이스모든 메소드가 추상 메소드인 경우를 의미하며, 인터페이스를 상속받는 클래스는 인터페이스에서 정의된 추상 메소드를 모두 구현해야한다. (따라서 다양한 클래스를 상속받는 특정 인터페이스는 결국 동일한 메소드를 제공한다.)
-> ArrayList가 아니라 List로 선언된 변수는 다음과 같이 필요헤 따라 다른 리스트 클래스를 쓸 수 있는 구현상의 유연성을 제공한다.

// 다른 객체로 대체 가능
List<Integer> list = new ArrayList<Integer>();
list = new LinkedList<Integer>();

 

728x90
반응형

'JAVA > Data Structure' 카테고리의 다른 글

[JAVA] ConcurrentHashMap  (0) 2022.10.23
[JAVA] Queue 자료구조 add와 offer 차이  (0) 2022.10.10
[JAVA] HashMap  (0) 2022.10.08