코디잉

01_배열 본문

자료구조&알고리즘/이론공부

01_배열

yong_ღ'ᴗ'ღ 2022. 8. 18. 23:52

- 배열: 같은 자료형의 변수로 이루어짐

- 배열 변수 : 배열 본체를 『참조』하는 것

- int[] arr = new int[5];

 → arr의 자료형 : int[5] 형

 → arr 각 요소의 자료형: int 형

- 배열의 구성 요소는 자동으로 0으로 초기화됨

  +) 지역 변수는 자동으로 초기화되지 않는다. (컴파일 오류 발생)

- 배열의 복사(깊은의미의 복사) : 배열이름.clone();

  다차원 배열의 같은 경우 → 최상위의 1레벨만 복사 수행함. 

  그 아래 레벨의 배열은 서로 참조하여 공유됨

- 배열 더미 출력: Arrays.toString(arr);

- 배열 정렬 (오름차순) : Arrays.sort(arr);

java.util.Arrays;

int[] arr = { 99, 2, 100, 25, 32, 18 };
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

// 결과
// [2, 18, 25, 32, 99, 100]

- 배열 정렬 (내림차순):   Arrays.sort(arr, Collections.reverseOrder());

🔥 int[] 형 배열로 만들 시, 컴파일 오류 발생

java: no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>)

method java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>) is not applicable

Collections.reverseOrder()는 java.util.Collections에서 Comparator를 기본으로 제공해주고 있다.

자바 Generics는 Primitive type에서는 작동하지 않는다고 한다.

그래서 int → Integer 로 써줘야 함!!

//int[] arr = { 34, 12, 92, 2, 77, 25 };
Integer[] arr = { 34, 12, 92, 2, 77, 25 };
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));

// 결과
// [92, 77, 34, 25, 12, 2]

- 다차원 배열 : 행이 다른 요소가 연속으로 놓이지 않음!

  ex) arr[0][3] 뒤에 x[1][0]이 바로 저장되어 있는게 아님

 

🔥 최댓값 구할 때.... 항상 아래와 같이 습관처럼 int i = 0; 으로 작성해왔는데...

max = arr[0];
for (int i = 0; i < arr.length; i++) {
	:

첫 번째 요소와는 비교할 필요 없으니까 int i = 1; 로 작성하면 된다,,,,,,!!!!!!

 

- 배열은 고정 길이

- ArrayList: 가변 길이 배열 자료구조

// ArrayList 선언 : 아래 3개 다 가능
List<Integer> list1 = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();
ArrayList<Integer> list3 = new ArrayList<>();	// JDK 1.7 이상부터 가능

// 추가
list1.add(1);

// 값 가져오기
System.out.println(list1.get(0));   // 1

// 값 설정하기
list1.set(0, 3);
System.out.println(list1.get(0));   // 3

// 제거
list1.remove(0);
//System.out.println(list1.get(0));
//--==>> Runtime Error: IndexOutOfBoundsException

// 길이 확인
System.out.println(list1.size());	// 0

 

'자료구조&알고리즘 > 이론공부' 카테고리의 다른 글

06_재귀 알고리즘  (0) 2022.08.26
05_큐(queue)  (0) 2022.08.19
04_스택(stack)  (0) 2022.08.19
03_이진 검색(binary search)  (0) 2022.08.19
02_선형 검색(linear search)  (0) 2022.08.19
Comments