배열 삭제하는 방법
package day5.arrayRemove;
public class ArrayRemove {
public static void main(String[] args) {
// 10개 짜리 숫자 배열
int[] arr = new int[10]; // 배열은 길이가 정해져야 함.
int count = 0; // 내가 저장한 정보의 개수를 기억하기 위함
arr[0] = 1;
count++;
arr[1] = 2;
count++;
arr[2] = 3;
count++;
arr[3] = 4;
count++;
arr[4] = 5;
count++;
// 저장한 숫자를 출력
for(int i = 0; i < count; i++) {
System.out.println(arr[i]);
}
// 1, 2, 3, 4, 5
// 3 삭제 => 1, 2, 4, 5
// 3을 삭제 ==========================
// arr[2] = arr[3];
// arr[3] = arr[4];
// arr[4] = arr[5];
for(int i = 2; i < count - 1; i++) {
arr[i] = arr[i + 1];
}
count--;
//====================================
// 3을 삭제한 결과 출력
for(int i = 0; i < count; i++) {
System.out.println(arr[i]);
}
// 배열에서 요소를 삭제하는 것은 불가능.
// 삭제된 것처럼 보이게 해야함.
// 못해먹겠다.
// 배열은 단점이 있다 -> 길이가 고정
// 유연성이 떨어지고 삭제나 추가 기능이 복잡하다.
// 해결 -> 길이를 유동적으로 변하게 하는 배열 사용 => 동적배열 (ArrayList)
}
}
ArrayList 사용법
package day5.arrayListExam;
import java.util.ArrayList;
public class ArrayListExam {
public static void main(String[] args) {
// 생성
// 배열
int[] arr = new int[5]; // 길이 5인 숫자 배열 생성
// ArrayList
ArrayList<Integer> list = new ArrayList<>(); // 비어있는 배열
// ===============================================
// 추가
// 배열 -> 추가 X
// ArrayList -> 추가
// 가장 앞에서부터 추가됨.
list.add(1); // 0번 방에 추가
list.add(2); // 1번 방에 추가
// ===============================================
// 조회
System.out.println(arr[0]); // arr 배열의 0번방 조회
System.out.println(arr[1]); // arr 배열의 1번방 조회
System.out.println(arr[2]); // arr 배열의 2번방 조회
// ArrayList
System.out.println(list.get(0)); // list 배열의 0번방 조회
System.out.println(list.get(1)); // list 배열의 1번방 조회
// System.out.println(list.get(2)); // list 배열의 2번방 조회 -> 2번방이 존재하지 않기 때문에 에러남
// ===============================================
// 수정
// 배열
arr[0] = 10; // arr 배열의 0번 방의 값을 10으로 수정.
System.out.println(arr[0]);
// ArrayList
list.set(0, 10); // list 배열의 0번 방의 값을 10으로 수정.
System.out.println(list.get(0));
// ===============================================
// 삭제
// 배열 -> 삭제 X
// ArrayList
System.out.println(list.get(0));
System.out.println(list.get(1));
list.remove(0); // 0번방의 값을 삭제. 삭제하면 뒤에 있는 요소들이 앞으로 땡겨짐.
System.out.println(list.get(0));
// System.out.println(list.get(1)); // 삭제로 인해 1번방이 존재하지 않기 때문에 에러가 남
// ===============================================
// 데이터의 개수 확인
// 배열 => length를 제공하기는 하지만 데이터의 개수랑 무관. 따로 내가 변수에 직접 보관해야 함.
// ArrayList
System.out.println(list.size()); // 1
list.add(2);
list.add(3);
System.out.println(list.size()); // 3
// 배열보다 ArrayList가 사용성이 훨씬 편하므로 ArrayList를 주로 사용하고
// 성능이 중요한 부분에서는 배열을 사용한다.
// int -> Integer
// ArrayList는 타입(자료형)을 객체만 다룬다.
// 객체형 자료형(리모콘), 원시형 자료형(int, boolean, double) 두가지로 구분.
// 원시형의 객체형 자료형을 제공
// int(원시형) -> Integer(객체형)
// char -> Character
// double -> Double
// byte -> Byte
// boolean -> Boolean
// 원시형 타입명에서 앞글자만 대문자로 바꾸면 객체형
// String은 원래 객체형
}
}