Programming/JAVA

[2023.01.06]reverseOrder()/toCharArray()

녱녱 2023. 1. 6.

문제를 풀면서 모르거나 한번에 떠오르지 않거나 헷갈리는 부분들을 정리해 보려고 한다!

배열의 정렬

굳이 코드로 정렬하지 않아도 메소드를 호출하면 간단하게 원하는 내용을 정렬할 수 있다.

 

Arrays.sort()

배열의 요소를 오름차순으로 정렬하기 위해 사용한다.

오름차순이 디폴트인 이유는 기본적으로 구현되어 있는 Comparable Interface의 compareTo 메서드가 기준이 되기 때문이라고 한다.

Arrays.sort()에서 자꾸 s를 빼먹길래 한 번 정리하고 넘어가려 한다:(

import java.util.*;

int[] arr = new int[]{1, 9, 8, 2, 3};
String[] strArr = new String[]{"A", "C", "D", "B"};

Arrays.sort(arr);
Arrays.sort(strArr);

//arr: 1 2 3 8 9
//strArr: A B C D

범위를 지정해 index에 포함되는 부분만 정렬하는 것도 가능하다!

import java.util.*;

int[] arr = new int[] {1, 9, 8, 2, 3}
Arrays.sort(arr, 1, 4);

//arr : 1 2 8 9 3

toIndex 이전 index까지 정렬해준다.

 

Collections.reverseOrder()

배열을 내림차순으로 정리할 때 사용한다.

import java.util.Arrays;
import java.util.Collections;

Integer[] arr = {1, 9, 8, 2, 3};
Arrays.sort(arr, Collections.reverseOrder());

//arr : 9 8 3 2 1

위와 같이 단독 사용이 아닌 Arrays.sort()와 함께 사용함을 알 수 있다.

Collections의 도움을 받아야 하기 때문에 Wrapper 클래스로 선언해 줘야 한다

 

Stream API

Java8 이상을 사용한다면 배열이나 컬렉션을 다루는 스트림(Stream) API를 이용할 수도 있다. Stream을 이용한다면 람다식(Lambda expression)을 통해 더 간결하게 표현할 수 있다고 한다.

String str = "ADBEC";

String[] strArr = str.split(""); //new String[] 배열로 변환

String streamSort1 = Stream.of(strArr).sorted().collectCollectors.joining());//오름차순
String streamSort2 = Stream.of(strArr).sorted(Comparator.reverseOrder()).collect(Collectors.joining())//내림차순

※ Comparator는 primitive Type의 배열에는 적용이 불가능하고 Wrapper Class에만 적용이 가능

모던액션인자바를 읽으며 안그래도 스트림을 자세히 공부해봐야겠다고 생각해서 조금씩 하고 있었는데 조만간 정리해서 포스팅 해야겠다.

toCharArray()

문자열을 한 글자씩 쪼개서 char 타입의 배열에 집어 넣어주는 메소드이다.

String str = "abc";

char[] charArr = str.toCharArray();
//주어진 문제에 맞는 연산들을 함

//charArr을 다시 문자열로 변환하기
String str1 = new String(charArr);	//String 생성자
String str2 = String.valueOf(charArr);	//String.valueOf

문자열을 배열로 만들어 계산해도 반환 타입은 보통 문자열이기에 문자열 -> 배열 -> 문자열 코드로 작성해 봤다

 

 

📕Reference

https://ifuwanna.tistory.com/232

 

 

'Programming > JAVA' 카테고리의 다른 글

[자료구조] Stack  (0) 2023.01.15
[2023.01.12] charAt()  (0) 2023.01.12
[2023.01.11] StringBuilder  (0) 2023.01.11
[2023.01.05] 문자열 형변환/length/parseInt/substring/Math  (0) 2023.01.05
JAVA Collection Framework(JCF)  (0) 2022.11.16

댓글