오늘은 코딩문제를 또 열심히 푸는 날이였다.
내일은 쉬는 날이니까 일단 내일 챕터 9 과 챕터 11를 마무리하고, 람다랑 스트림을 월요일날 보는 것을 목표로 해야겠다.
출처: https://codechacha.com/ko/java-sort-set/
일단 HashSet은 중복을 허용하지 안하고, 순서를 보장하지 않는 자료구조이다. 하지만 저장할때 거의 대부분은 sorting 되어 있다. (나의 생각이다.) 이때 그래도 정렬이 안되어 있다고 생각이 든다면 List로 변경을 해서 sorting 하면 다음과 같은 예를 들 수 있다.
import java.util.*;
public class Example {
public static void main(String[] args) {
HashSet<String> myHashSet = new HashSet<>();
myHashSet.add("kiwi");
myHashSet.add("apple");
myHashSet.add("melon");
myHashSet.add("orange");
myHashSet.add("banana");
System.out.println("Set: " + myHashSet);
ArrayList<String> al = new ArrayList<>(myHashSet);
System.out.println("List: " + al);
Collections.sort(al);
System.out.println("Sorted list: " + al);
}
}
// output
Set: [orange, banana, apple, kiwi, melon]
List: [orange, banana, apple, kiwi, melon]
Sorted list: [apple, banana, kiwi, melon, orange]
출처: https://codechacha.com/ko/java-sorting-array/
보통 정렬을 할때 Arrays.sort() 를 한다.
하지만 역으로 정렬하거나 배열의 길이가 가변할때 (이때는 ArrayList 를 사용)
이때를 생각해보자.
이떄와 같은 경우는 Collections.reversOrder()를 인자 추가해서 보내줘야 한다.
예시)
Integer[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
인자를 따로 지정해줘서 할 수 있다.
예시)
int[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr, 0, 4);
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
카카오 문제에서 한 문자 (예를들어 . 과 같은) 제거하는 문제가 나왔다.
이때 저번에 배운 replaceAll 에서 정규식을 써야한다는 부분이 있었는데, 이번 문제에서 그 문제가 나왔다.
자세한 정규표현식 관련한 것은 다음과 같다.
https://zzang9ha.tistory.com/322
저번에 올렸던 예시지만 replaceAll 과 replace 관련한 replace 관련글은 다음과 같다.
https://lnsideout.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B9%98%ED%99%98-%EB%B0%A9%EB%B2%95-raplace-replaceAll-%EC%B0%A8%EC%9D%B4%EC%A0%90
이번 문제를 푸는데 도움이 되었던 예제는 다음과 같다.
https://velog.io/@minji/Java-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9DString.replaceAll-%EB%A9%94%EC%84%9C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B9%98%ED%99%98