개발 지식 기록/JAVA 12

Arrays.sort()와 Collections.sort()

낮은 레벨의 연습문제를 풀고 있는데 나는 배열에 담아서 Array.sort()를 썼는데 다른 사람들의 풀이를 보니 Collections.sort()를 많이 쓰는 것을 보았다. 그래서 Arrays.sort()와 Collections.sort() 차이를 한번 정리해보려고 한다. Arrays.sort() 배열을 오름차순으로 정렬한다. 숫자 > 대문자 > 소문자 > 한글 순서로 정렬한다. Arrays.sort(배열,Collections.reverseOrder())를 사용하여 내림차순으로 정렬한다. 기본형 배열의 경우 DualPivotQuicksort를 사용한다. Quicksort는 평균O(NlogN), 최악의 경우 O(N²)의 시간복잡도를 가진다. DualPivotQuicksort.sort()는 퀵정렬이 최악의..

String vs StringBuffer vs StringBuilder

코딩테스트 연습 문제를 풀 때 아무 생각 없이 String으로 작성했는데 다른 사람들의 풀이를 보면 StringBuilder를 쓴 것을 자주 보곤 했다. 최근에 문자열에 계속 추가를 해야 하는 과제가 있었기에 이번 기회에 String과 StringBuffer, StringBuilder의 차이를 정리하려고 한다. String String클래스는 인스턴트를 생성할 때 지정된 문자열을 변경할 수 없다.(불변성) 기존 문자열에 +로 문자를 추가한 경우 보기에는 내용이 변경되는 것 같지만, 새로운 내용의 문자열이 형성되고 그 메모리 영역을 가리키도록 변경된다. 기존 메모리 영역은 Garbage로 남아있다가 GarbageCollection에 의해 사라진다. 따라서 변경이 빈번한 경우 성능이 떨어질 수밖에 없다. S..