Конструктор TreeSet

В соответствии с этим: https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html

В классе TreeSet есть 2 конструктора:

TreeSet(Collection<? extends E> c)
TreeSet(Comparator<? super E> comparator)

Я не уверен, какой конструктор в приведенном выше 2 соответствует ниже t2 TreeSet и используется ли переданный объект или нет?

кот Sorted.java

import java.util.*;

 public class Sorted implements Comparable<Sorted>, Comparator<Sorted> {
    private int num;
    private String text;

    Sorted(int n, String t) {
            this.num = n;
            this.text = t;
    }
    public String toString() { return "" + num; }
    public int compareTo(Sorted s) { return text.compareTo(s.text); }
    public int compare(Sorted s1, Sorted s2) {
            return s1.num-s2.num;
    }

    public static void main(String[] args) {
            Sorted s1 = new Sorted(88, "a");
            Sorted s2 = new Sorted(55, "b");

            TreeSet<Sorted> t1 = new TreeSet<>();
            t1.add(s1); t1.add(s2);

            TreeSet<Sorted> t2 = new TreeSet<>(new Sorted(1,"c"));
            t2.add(s1); t2.add(s2);

            System.out.println(t1 + " " + t2);
    }

}

Вывод:

[root@localhost temp]# java Sorted
[88, 55] [55, 88]
[root@localhost temp]#

Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете этот конструктор:

TreeSet(Comparator<? super E> comparator)

Потому что здесь:

new TreeSet<>(new Sorted(1, "c"));

Вы передаете объект Sorted, а Sorted — это не Collection, это Comparator (и, кстати, тоже Comparable):

public class Sorted implements Comparable<Sorted>, Comparator<Sorted>

И, конечно, переданный объект используется внутри TreeSet для выполнения своих сравнений.

Другие вопросы по теме