[Java 자료구조(배열)] 배열과 ArrayList 클래스 장단점과 사용방법

배열

배열은 같은 자료형의 데이터를 효율적으로 관리하기 위해서 사용되며, 같은 자료형의 데이터를 순차적으로 저장하는 기본적인 자료구조 이다.

배열을 사용하는 이유는 배열의 인덱번호로 빠른접근이 가능하다. 하지만 단점으로는 미리 최대 길이를 지정해야 해서 데이터의 추가 삭제가 어렵다.

배열 사용예제

//배열 생성방법
int[] a = new int[5]; //길이가 5인 int형 배열 생성
String b[] = new String[5]; //길이가 5인 String형 배열 생성

//구성요소 참조
System.out.println(a[0]); //0 출력
System.out.println(b[0]); //null 출력

//구성요소의 개수 알수있는 length
System.out.println(a.length); //5 출력

//배열생성시 각 요소 초기화 방법
int c[] = new int[]{1, 2, 3, 4, 5};

//배열 복제방법
int d[] = c.clone();
System.out.println(Arrays.toString(d)); //[1, 2, 3, 4, 5] 출력
  1. 배열 생성시 변수앞에 [] 있어도 되고 뒤에 있어도 된다.
  2. 길이가 정해져야 하므로 크기를 반드시 지정해 줘야 한다.
  3. 배열생성시 default로 값이 세팅 되는데 int형은 0으로 String은 null로 초기화 된다.
  4. length로 구성요소수를 알수 있다.
  5. 배열 생성시 new int[]{1,2,3,4,5} 괄호 안에 , 단위로 값을 넣어서 값을 초기화 할수 있으며 길이는 값의 개수로 세팅된다.
  6. clone() 함수로 배열을 복사할 수 있다.
  7. Arrays클래스로 배열을 손쉽게 다룰수 있는데 toString() 함수로 배열의 전체 데이터를 출력 할 수 있다.

ArrayList

위에서 사용한 배열은 사이즈를 가변적으로 변경할수 없다는 치명적인 단점이 있다. 그래서 이를 보완하기 위해 가변 길이의 배열 자료구조를 다룰 수 있기 위해 ArrayList 클래스를 사용한다.

ArrayList 생성방법

//ArrayList 생성방법
List<Integer> list1 = new ArrayList<Integer>(); //List 인터페이스로 객체 생성
ArrayList<Integer> list2 = new ArrayList<Integer>(); //ArrayList 클래스로 객체 생성
ArrayList<Integer> list3 = new ArrayList<>(); //JDK 1.7부터는 객체 생성시 타입을 추정할 수 있으면 생략 가능

list1 = new LinkedList<Integer>(); //List로 선언된 변수는 필요에 따라 다른 List 클래스를 쓸수 있는 구현상의 유연성을 제공한다.
  1. ArrayList 객체를 생성하기 위해서 List 인터페이스 변수에 담을수 있다. ArrayList 클래스 변수에 담는것과의 차이는 List 변수는 필요에 따라 List로 구현된 다른 클래스들을 담아서 사용할 수 있는 장점이 있다.
  2. JDK 1.7부터는 객체 생성시 <>제네릭 타입을 추정할수 있으면 생략 가능하다.
list2.add(1); //값 추가(인덱스는 0번부터)
list2.add(2);
list2.add(2, 3); //특정인덱스에 값을 넣을수 있음.
System.out.println(list2.get(1)); //get() 함수로 인덱스 값 추출
list2.remove(2); //remove() 함수로 인덱스 삭제
  1. add() 함수로 값을 추가 할수 있으며 인덱스는 0번부터 생성된다.
  2. add(index, element) 2개 인자를 넣으면 특정 인덱스에 값을 추가 할수 있다.
  3. get(index) 함수로 특정 index값을 가져올 수 있다.
  4. remove(index) 함수로 특정 index값을 삭제 할 수 있다.

댓글

Designed by JB FACTORY