중요한 건 arrayList만으로는 부족하다는 것이다
중복 제거를 해야 하니까 처음부터 set을 쓰자.
그리고 ArrayList보다는 list로 선언하는 것이 좋다.
List<String> list = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();
List 가 인터페이스인데, 인터페이스 타입으로 코딩하는 습관이 좋다.
핵심 코드는 아래와 같다.
정렬기준(길이 → 사전순)에 따라 return하는 함수
wordList.sort((s1, s2) -> {
if(s1.length() != s2.length()){
return s1.length() - s2.length();
}else{
return s1.compareTo(s2);
}
});
*참고 compareTo의 동작 방식
int result = s1.compareTo(s2);
반환값 | 의미 |
---|---|
음수 | s1이 s2보다 사전상 앞에 있음 |
0 | 두 문자열이 같음 |
양수 | s1이 s2보다 사전상 뒤에있음 |
"apple".compareTo("banana") 이면 return -1
"dog".compareTo("cat") 이면 return 양수 (+1)
*내부정렬 알고리즘에서 comparator의 반환값은 어떤 기준으로 작동하는가?