栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

列表到TreeSet的转换产生:“java.lang.ClassCastException:MyClass无法转换为java.lang.Comparable”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

列表到TreeSet的转换产生:“java.lang.ClassCastException:MyClass无法转换为java.lang.Comparable”

是否

MyClass implements Comparable<MyClass>
或类似的东西?

如果没有,那就是为什么。

为此

TreeSet
,您必须制作元素
Comparable
或提供一个
Comparator
。否则
TreeSet
将无法运行,因为它将不知道如何对元素进行排序。

请记住,,

TreeMap implements SortedSet
因此它必须知道如何以一种或另一种方式对元素进行排序。

您应该熟悉实现如何为给定类型的对象

Comparable

定义 自然顺序 的知识。

接口定义一个方法,

compareTo
如果该对象分别小于,等于或大于另一个对象,则该方法必须返回负整数,零或正整数。

合同 要求

  • sgn(x.compareTo(y)) == -sgn(y.compareTo(x))
  • 它是可传递的:
    x.compareTo(y)>0 && y.compareTo(z)>0
    隐含
    x.compareTo(z)>0
  • x.compareTo(y)==0
    意味着
    sgn(x.compareTo(z)) == sgn(y.compareTo(z))
    对于所有人
    z

此外,它 建议

  • (x.compareTo(y)==0) == (x.equals(y))
    ,即“与
    equals

乍一看似乎需要消化很多,但是对于定义总排序的方式确实很自然。


如果您的对象不能以一种或另一种方式进行排序,则

TreeSet
没有意义。您可能要使用
HashSet
具有自己的合同的a。您可能会被要求
@OverridehashCode()
并且
equals(Object)
适合您的类型(请参阅:Java中的覆盖equals和hashCode)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号