int배열을 integer[]로 만들기!< int[] to Integer[]? >

박두팔이·2023년 1월 24일
0

배열을 정리하는 방법에는 여러가지가 있을 것이다.

오늘 나의 호기심을 자극한 것은 int[ ]을 역순으로, 즉 내림차순으로 정렬하는 방법에 관한것이다.

마구잡이로 섞여있는 int타입의 배열을 오름차순으로 정렬할 땐 Arrays.sort() 메서드를 사용하면 간단하다.

그런데 내림차순으로 배열을 정렬하고 싶을 땐 어떻게 해야할까? 우선 내 궁금증의 출발이 되는 코드를 소개한다.

int[] wallet = {1, 10, 5, 500, 50, 100};

사실 이 배열의 요소는 매우 짧기 때문에 직접 수기로 바꾸는 것이 훨씬 빠를것이다.

int[] wallet = {500,100,50,10,1};

💡 알고리즘 문제를 풀며 정성껏 배열을 손으로 작성하고 있는데... 문득 "배열의 요소가 많아지면 그땐 어떻게 역순으로 정렬해줘야하지?..그땐 손으로 직접 못하잖아??" 라는 생각이 스쳤다. (사실 다양한 컬렉션으로 데이터를 정렬할 것이기 때문에 중요한 문제는 아니었으나 그냥 궁금해졌다.. 😂)

우선 int타입의 배열을 오름차순으로 정렬하는 방법은 앞서 설명했다. 그러나 int[ ]을 내림차순으로 정렬을 할 때에는 int[ ]배열을 Integer타입의 배열로 바꿔주어야 한다는 것이다.

int[] wallet = {1, 10, 5, 500, 50, 100};
Integer b[] = Arrays.stream(wallet).boxed().toArray(Integer[]::new);
Arrays.sort(b, Collections.reverseOrder()); //역순으로 정렬하기 

Integer타입의 배열에 int타입 wallet[ ]을 스트림으로 wallet을 순회하고 integer타입의 배열[ ] 'b'를 생성한다. 이후 Arrays클래스의 sort메서드를 이용하여 Integer타입의 배열 b를 역순으로 정렬한다.

💡 그런데 같은 정수형을 저장하는데 int와 Integer를 구분하는 이유는 무엇일까?

int와 Integer의 차이가 궁금해졌다.

자료형이란 데이터를 저장하는 형식과 메모리크기를 정의한 것이다.

예를들어 int a=1;의 코드가 있다.

여기서의 int는 '1'을 4byte의 메모리크기에 정수형식으로 a라는 변수명에 값 1을 저장하겠다는 의미이다.

자료형은 두가지로 구분될 수 있다.

  • 기본형(P타입)
  • 참조형(R타입)

기본형타입의 종류이다. Java의 데이터타입중 가장 기초타입이라고 이해하면 된다.

  • 기본타입의 정수는 산술연산이 가능하며 0으로 초기화 할 수 있다. 그러나 정수만을 담을 수 있는 데이터타입이기 때문에 null로는 초기화가 불가능하다. 정수는 0일수는 있어도 null일수는 없다.

  • 그러나 Integer타입은 Wrapper클래스이기 때문에 null값처리를 할 수 있다.
    경우에따라 기본형타입을 객체로 사용해야 할 때가 있다. 이런경우 int타입의 정수를 Integer클래스로 감싸주어야한다. 이것을 Wrapper Class라고 한다.

1. int -> Integer 스트림을 사용하여 변환하는 방법
int[] wallet = {1, 10, 5, 500, 50, 100};
Integer b[] = Arrays.stream(wallet).boxed().toArray(Integer[]::new);

2. int -> Integer 
Integer ig = new Integer(i);

3. Integer -> int intValue()를 사용하여 변환하는 방법
int i = ig.intValue();
profile
기억을 위한 기록 :>

0개의 댓글