Skip to content

[정렬] #258

@blossun

Description

@blossun

Comparable 구현

  • List
    public static List<Person> arr = new ArrayList<>();
    Collections.sort(arr);

    private static class Word implements Comparable<Word> {
        private Integer length;
        private String str;

        public Word(String str) {
            this.length = str.length();
            this.str = str;
        }

        @Override
        public int compareTo(Word o) {
            if (this.length < o.length) {
                return -1;
            } else if (this.length == o.length) {
                    return this.str.compareTo(o.str); //동일한 단어라면 0이 리턴되고 중복이 제거되고 저장된다. 그리고 알파벳 순서로 정렬됨
            } else {
                return 1;
            }
        }
    }

Comparator 정렬기준

// array
Arrays.sort(arr, Comparator.comparingInt(a -> a[1])); // a[1]를 기준으로 오름차순 정렬
// list
stringList.sort((num1, num2) -> (num2 + num1).compareTo(num1 + num2)); // 30, 3 -> 303, 330 중 330이 먼저
  • sorted() - new Comparator
import java.util.Arrays;
import java.util.Comparator;

public class N12915 {
    private int N;

    public String[] solution(String[] strings, int n) {
        N = n;
        String[] results = Arrays.stream(strings).sorted(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int result = o1.charAt(n) - o2.charAt(n);
                if (result == 0) {
                    return o1.compareTo(o2);
                }
                return result;
            }
        }).toArray(String[]::new);
        return results;
    }
}

Multi 정렬 - thenComparing

fileNameList.sort(Comparator.comparing(FileName::getHead).thenComparing(Comparator.naturalOrder()));

Metadata

Metadata

Assignees

Labels

Refer★별★공부한 내용 다시 보기

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions