배열(Array)
- 배열은 여러 개의 데이터들을 하나의 이름으로 묶어서 관리하기 위한 자료구조이다.
- 배열은 각 저장공간을 가리키는 index를 갖고 있으며 저장되어 있는 값에 접근할 때 이 index를 통해 접근한다.
- 배열은 초기 생성시 크기를 정해서 생성해주어야 하며 한 번 생성된 이후에는 크기를 변경할 수 없다.
- 초기에 정의된 크기대로 연속된 메모리 공간을 점유한다.
- 즉 논리적 저장 순서와 물리적 저장 순서가 일치한다.
장점
메모리 공간이 연속적이어서 관리가 편하다.
index를 이용하기 때문에 데이터 조회가 빠르다.
단점
배열의 크기가 초기 생성시에 정해지면 그 이상의 데이터를 저장할 수 없다. 이를 변경하기 위해서는 새로운 배열을 생성해야 한다.
배열의 중간에 데이터가 삭제되면 빈 공간이 생겨 메모리 낭비가 발생할 수 있다.
리스트(LIST)
- 리스트는 초기에 선언 시 크기를 정해줄 필요가 없으며 이후에도 동적으로 크기가 변한다는 점이 가장 두드러진 특징이다. 따라서 리스트는 원하는 만큼의 값을 저장할 수 있다. ( 명확한 데이터의 개수를 알 수 없는 경우 사용하면 유리하다.)
- 원칙적으로는 저장공간이 물리적으로 연속적이지 않기 때문에 index를 붙이지 않는다.
- 자바에서 List는 Collection 인터페이스를 확장시킨 인터페이스로 실제로 선언하고 사용하기 위해서는 ArrayList, LinkedList, Vector 등과 같은 실제 구현체를 사용해야 한다.
ArrayList
이름 그대로 배열과 리스트의 장점들을 합친 클래스로 배열의 특성인 index를 사용하면서 리스트의 특성인 크기를 동적으로 사용할 수 있다는 특징이 있다.
배열은 모든 데이터 타입을 저장할 수 있는 반면 ArrayList는 객체 타입만 저장 가능하다는 차이점이 있다.
저장공간이 물리적으로 연속되게 할당되기 때문에 조회,검색은 빠르지만, 삽입, 삭제는 비효율적이라는 배열의 특성을 그대로 가져간다.
ArrayList 기본 메소드
ArrayList<String> arr = new ArrayList<>();
//add : 맨 뒤에 데이터를 추가하여 저장하거나 원하는 위치를 index로 같이 넘겨줘서 저장할 수 있다.
arr.add("120"); //["120"]
arr.add("148"); //["120", "148"]
arr.add("160"); //["120", "148", "160"]
arr.add(1,"128"); //["120", "128", "148", "160"]
System.out.println(arr.toString()); //["120", "128", "148", "160"]
//size : ArrayList의 요소 개수를 리턴한다.
System.out.println(arr.size()); // 4
//contains : ArrayList 안에 해당 데이터가 있는지 판별하여 그 결과를 boolean 값으로 리턴한다.
System.out.println(arr.contains("148")); //true
//remove : ArrayList 내에 전달받은 데이터가 존재하면 그 데이터를 삭제한다.
System.out.println(arr.remove(1)); // 1번 인덱스 데이터를 삭제하고 삭제에 성공하면 삭제한 데이터 값을 리턴한다.
System.out.println(arr.remove("160")); // ArrayList 내에 넘겨받은 데이터가 존재하면 삭제하고 삭제 성공 여부를 리턴한다. 중복 데이터가 존재하는 경우 index 상 앞에 존재하는 데이터를 삭제.
기존 배열로 ArrayList 생성하기
// 기존에 생성되어 있는 배열을 List객체로 변환 후 ArrayList생성
String[] data = {"120", "148", "160"};
ArrayList<String> arr2 = new ArrayList<>(Arrays.asList(data));
String.join으로 문자열 생성하기
String[] data = {"120", "148", "160"};
ArrayList<String> arr = new ArrayList<>(Arrays.asList(data));
System.out.println(String.join(",",arr)); //ArrayList 내 데이터들을 ,로 구분한 문자열 생성
System.out.println(String.join(",",data)); //일반 배열로도 문자열 생성이 가능하다.
//결과
120,148,160
120,148,160
참고 레퍼런스
'Language > Java' 카테고리의 다른 글
[JAVA] Comparator (0) | 2024.08.20 |
---|---|
[Java] String to List (0) | 2022.11.07 |
[Java] String to Integer, Integer to String (0) | 2022.10.09 |
java.util.Arrays 정리 (0) | 2022.10.09 |