Java에 자료구조인 List, Set, Map에 대해 알아보고 Array와 ArrayList를 구분지어 알아보자.
public void intArray() {
int [] i = new int[2];
i[0] = 10;
i[1] = 20;
System.out.println(i[0]);
System.out.println(i.length); //list의 길이 = 데이터의 개수
}
output:
10
2
public void Set01() {
HashSet<Integer> set = new HashSet<Integer>()
set.add(1);
set.add(1);//중복되는 데이터 중 최종 1이 남는 1
set.add(2);
set.add(3);
set.add(4);
System.out.println(set.size());
System.out.println(set.contains(3));
System.out.println(set.toString());
output:
4
true
[1, 2, 3, 4] // 중복되는 값이 들어오면 나중 값만 남기고 모두 삭제한다.
public void hashMap01() {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Harry Potter");
map.put(2, "Ron Weasley");
// 출력
System.out.println(map.get(1)); //map.get(new Integer(1))와 동일
}
output:
Harry Potter
길이 조절
Array는 길이를 한 번 지정하여 생성하면 바꿀변경 할 수 없다.
ArrayList의 길이는 가변적이다.
Primitives
Array : primitive type, Object
ArrayList : Object (Only!) (primitive data types(int, float, double etc)을 가질 수 없다.)
배열 조회
Array : for 문, for each 문을 통해 데이터를 조회한다.
ArrayList : iterator를 사용하여 데이터를 순회 할 수 있다.
차원
Array : 다차원이 가능하다.
ArrayList : 1차원만 가능하다.
메모리
Array : 초기화 시 메모리에 할당된다. ArrayList 보다 빠르다.
ArrayList : 데이터 추가 삭제시 메모리를 재할당한다. Array보다 느리다.
때문에 보통 알고리즘같이 속도가 중요한 작업에는 Array를 사용한다.