Search

배열

태그
배열
자바
멀티캠퍼스
파일
Array.pdf
배열
같은 타입의 데이터들을 하나의 묶음으로 다루는 자료구조이다.
배열은 참조자료형으로 JVM heap 영역에 저장된다.
참조형 변수(reference)를 통해 heap 영역의 배열에 접근할 수 있고, index 를 통해 배열 안의 데이터에 접근할 수 있다.
배열 생성 해보기
//배열 생성 해보기 //String 타입의 데이터를 5개를 보관할 수 있는 배열 생성. String[] sArr = new String[5]; sArr[0] = "치킨"; sArr[1] = "족발"; sArr[2] = "감자튀김"; sArr[3] = "군고구마"; sArr[4] = "회"; System.out.println(sArr); System.out.println(sArr[3]); // 배열의 선언과 동시에 초기화 // 크기가 5인 int[] 을 선언하고 각 인덱스에 5,4,3,2,1 값을 초기화 int[] iArr = new int[] {5,4,3,2,1}; //iArr.length : 배열의 크기 for (int i = 0; i < iArr.length; i++) { System.out.print(iArr[i]); } System.out.println(); //배열 리터럴 초기화 int[] iArr2 = {1,2,3,4,5}; for (int i = 0; i < iArr2.length; i++) { System.out.print(iArr2[i]); }
Java
복사
가변 배열
주소배열의 크기는 지정해야 하지만, 값을 저장할 배열의 크기는 지정하지 않고 2차원 배열을 초기화 한다.
int[][] dArr = new int[2][]; dArr[0] = new int[3]; dArr[1] = new int[2];
Java
복사
2차원 배열
2차원 배열은 1차원 배열을 여러개 보관하는 배열이다.
//2차원 배열 선언 int[][] dArr; //2차원 배열의 초기화 //크기가 4인 int[]을 3개 가지는 배열 dArr = new int[3][4]; dArr[0][0] = 1; dArr[0][1] = 2; dArr[0][2] = 3; dArr[0][3] = 4;
Java
복사
ArrayUtil
remove
원하는 인덱스의 데이터를 삭제하는 메서드
첫번째 parameter : 배열
두번째 parameter : 인덱스
public static int[] remove(int[] arr, int idx) { int[] temp = new int[arr.length - 1]; int tidx = 0; for (int i = 0; i < arr.length; i++) { if(i == idx) continue; temp[tidx] = arr[i]; tidx++; } return temp; }
Java
복사
subArr
원하는 인덱스 구간의 데이터를 잘라내는 메서드
인덱스 구간 : 시작 인덱스 ~ 끝 인덱스의 앞 인덱스 까지의 데이터
첫번째 parameter : 배열
두번째 parameter : 시작 인덱스
세번째 parameter : 끝 인덱스
화살표 함수用
int[] data = {1,2,3,4,5} subArr(data,0,2); -> [1,2]
Java
복사
public static int[] subArr(int[] arr, int start, int end) { int[] temp = new int[end-start]; //b for (int i = 0; i < temp.length; i++) { temp[i] = arr[start+i]; } return temp; }
Java
복사
merge
매개변수로 넘어온 두 int 배열을 하나의 배열로 합쳐주는 메서드
화살표 함수用
int[] data = {1,2,3,4,5} int[] data2 = {6,7,8,9,0} merge(data,data2) -> [1,2,3,4,5,6,7,8,9,0]
Java
복사
public static int[] merge(int[] arr1, int[] arr2) { //매개변수로 전달받은 두 배열의 크기를 합친 크기의 새로운 배열을 생성 int[] bigArr = new int[arr1.length + arr2.length]; //두 배열에 있는 값들을 새로운 배열에 밀어넣는다. for (int i = 0; i < arr1.length; i++) { bigArr[i] = arr1[i]; } for (int i = 0; i < arr2.length; i++) { bigArr[arr1.length + i] = arr2[i]; } //새로운 배열을 반환한다. return bigArr; //없음 }
Java
복사
오름차순 정렬메서드
public static void asc(int[] iArr) { for (int i = 0; i < iArr.length; i++) { boolean flg = true; for (int j = 0; j < iArr.length-1-i; j++) { if(iArr[j] > iArr[j+1]) { int tmp = iArr[j]; iArr[j] = iArr[j+1]; iArr[j+1] = tmp; flg = false; } } if(flg) break; } }
Java
복사
내림차순 정렬메서드
public static void desc(int[] iArr) { for (int i = 0; i < iArr.length; i++) { boolean flg = true; for (int j = 0; j < iArr.length-1-i; j++) { if(iArr[j] < iArr[j+1]) { int tmp = iArr[j]; iArr[j] = iArr[j+1]; iArr[j+1] = tmp; flg = false; } } if(flg) break; } }
Java
복사