자바스크립트에는 배열에 이미 내장된 함수 들이 있다. 예를들면 push 라던가 pop이라던가 slice라던가. 하지만 자바는 내장되어있지 않고 직접 기능을 만들어 주어야 한다. js에 비교해 자바는 약간 좀 더 손이 많이 가고 분명확실하게 디테일들을 직접 만들어야 된다는 번거로움이 있지만 그만큼 좀 더 깊이가 있고 탄탄한 것 같다.
array.copy
public class ArrayCopy {
public static void main(String[] args) {
String[] pets = {"멍멍이", "야옹이", "쨱짹이"};
// String[] petsCopy = pets; // 복사 1 : 배열복사가 아니라 배열 주소 복사
String[] petsCopy = new String[pets.length];
for (int i = 0; i < pets.length; i++) {
petsCopy[i] = pets[i];
} // 찐 복사 : 요지는 새로운 방을 만들고 직접 옮겨준다.
// const petsCopy = [...pets]; <== 자바스크립트 찐복사
pets[1] = "냥냥이"; // 복사 후 원본 수정
System.out.println("pets = " + Arrays.toString(pets));
System.out.println("petsCopy = " + Arrays.toString(petsCopy));
}
}
array.delete
public class ArrayDelete {
public static void main(String[] args) {
// 배열에서 원하는 위치의 값 삭제하기
int[] numbers = {1, 3, 5, 7, 9, 11};
int targetIndex = 2;
for (int i = targetIndex; i < numbers.length - 1; i++) {
numbers[i]= numbers[i+1];
}
// numbers[i] = numbers[i+1];
// numbers[2] = numbers[3];
// numbers[3] = numbers[4];
// numbers[4] = numbers[5];
int[] temp = new int[numbers.length -1];
for (int i = 0; i < temp.length; i++) {
temp[i] = numbers[i];
}
numbers = temp;
temp = null;
System.out.println(Arrays.toString(numbers));
}
}
array.insert
public class ArrayInsert {
public static void main(String[] args) {
int[] arr = {10, 50, 90, 100, 150};
int newNumber = 66;
int targetIndex = 2;
// 50 과 90 사이에 66을 삽입!!//
// 1. 사이즈가 1개 더 큰 배열 생성
int[] temp = new int[arr.length + 1];
// 2. 기존 데이터 복사
for (int i = 0; i < arr.length; i++) {
temp[i] = arr[i];
}
// 3. 삽입위치에서 데이터 뒤로 1칸씩 이동
// 이동 순서는 끝에서부터 시작해야 함
for (int i = arr.length; i > targetIndex; i--) {
temp[i] = temp[i-1];
}
// 4. 새로운 데이터를 타겟 인덱스자리에 복사
temp[targetIndex] = newNumber;
// 5. 주소값 이전
arr = temp; temp = null;
System.out.println("arr: " + Arrays.toString(arr));
System.out.println("temp: " + Arrays.toString(temp));
}
}
array.pop
public class ArrayPop {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50, 60};
// pop: 배열의 맨 끝 데이터 삭제하면서 꺼내옴
// 1. 기존사이즈보다 1개 적은 사이즈의 배열을 생성
int[] temp = new int[numbers.length -1];
// 2. 원본배열에서 맨 끝인덱스를 제외한 모든 내용 사본에 복사
for (int i = 0; i < temp.length; i++) {
temp[i] = numbers[i];
}
// 삭제값 백업
int removedNumber = numbers[numbers.length -1];
// 3. 주소값 이전
numbers = temp;
temp = null;
System.out.println("numbers: "+ Arrays.toString(numbers));
System.out.println("numbers: "+ Arrays.toString(temp));
System.out.println("삭제된 값 = " + removedNumber);
}
}
array.push
ublic class ArrayPush {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40};
int newNumber = 50;
// 1. 기존 사이즈보다 1개가 큰 새로운 배열 생성
int[] temp = new int[numbers.length + 1];
// 2. 기존 데이터를 새로운 배열에 전부 복사
for (int i = 0; i < numbers.length; i++) {
temp[i] = numbers[i];
}
// 3. 새 배열의 끝인덱스에 넣을 데이터 추가하기
temp[temp.length -1] = newNumber;
// 4. numbers에 저장된 주소값을 temp의 주소값으로 변경
numbers = temp;
// 5. temp는 더이상 배열을 관리하면 안됨
temp = null;
System.out.println("numbers: "+ Arrays.toString(numbers));
System.out.println("numbers: "+ Arrays.toString(temp));
}
}
array.search
public class ArraySearch {
public static void main(String[] args) {
String[] foods = {"족발", "파스타", "치킨", "삼겹살"};
String target = "치킨";
int index= -1;
for (int i = 0; i < foods.length; i++) {
if (target.equals(foods[i])) {
index = i;
break;
}
}
System.out.println("index = " + index);
}
}
'Java' 카테고리의 다른 글
Java* Matrix (1) | 2024.04.12 |
---|---|
Java* 배열(array) Scanner (0) | 2024.04.12 |
Java* 배열 (array) basic (0) | 2024.04.09 |
Java* 변수 (0) | 2024.04.08 |
Java* 데이터 타입 (0) | 2024.04.08 |