首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TreeSet构造函数

TreeSet构造函数
EN

Stack Overflow用户
提问于 2019-02-06 22:08:03
回答 1查看 71关注 0票数 0

如下所示:https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html

TreeSet类中有两个构造函数:

代码语言:javascript
复制
TreeSet(Collection<? extends E> c)
TreeSet(Comparator<? super E> comparator)

我不确定上面2中的哪个构造函数与下面的t2 TreeSet匹配,以及是否使用了传递的对象?

cat Sorted.java

代码语言:javascript
复制
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);
    }

}

输出:

代码语言:javascript
复制
[root@localhost temp]# java Sorted
[88, 55] [55, 88]
[root@localhost temp]#

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-06 22:10:34

您正在使用此构造函数:

代码语言:javascript
复制
TreeSet(Comparator<? super E> comparator)

因为在这里:

代码语言:javascript
复制
new TreeSet<>(new Sorted(1, "c"));

您正在传递一个Sorted对象,而Sorted不是一个Collection,而是一个Comparator (顺便说一下,它也是一个Comparable):

代码语言:javascript
复制
public class Sorted implements Comparable<Sorted>, Comparator<Sorted>

当然,传递的对象由TreeSet在内部使用来执行比较。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54555543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档