对于代码:
Set<Phone> set = new TreeSet<>();
set.add(new Phone("Harry"));
Run Code Online (Sandbox Code Playgroud)
我得到错误:
电话不能转换为java.base / java.lang.Comparable
如果引用变量是类型,为什么Phone必须实现Comparable Set?
如果引用变量是TreeSet,则当然Phone必须实现class Comparable。
构造一个新的空树集,根据其元素的自然顺序进行排序。插入集合中的所有元素都必须实现 Comparable 接口。
这些元素必须具有某种可比性,因为TreeSet是SortedSet。请注意,Sets 不一定是无序的,只是Set接口未指定顺序。允许实现类定义元素的顺序。
如果要将非 Comparable 实例插入比较器(或使用非自然排序),则必须使用显式比较器调用构造函数。
Set <Phone> set = new TreeSet<>(someComparator);
Run Code Online (Sandbox Code Playgroud)