중요한 건 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의 반환값은 어떤 기준으로 작동하는가?