gpt4 book ai didi

Java 泛型和集合集

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:38 24 4
gpt4 key购买 nike

我是一个 Java 新手,具有一点 C++ 经验,我正在尝试按照以下几行在 Java 中创建一组集合(类似于在 C++ 中所做的):

Set< Set< String > > collection = new TreeSet< Set< String > >();
Set< String > entry = new TreeSet< String >();
collection.add( entry );

这个构建很好,但是当程序执行时,抛出一个 java.util.TreeSet cannot be cast to java.lang.Comparable 异常。

如果不重新实现轮子,怎么能在 Java 中拥有一组集合?

此外,Java 允许编译损坏的代码(例如,类型不匹配)有什么用?

提前感谢您的任何反馈。

最佳答案

TreeSet的契约(Contract)中,要求所有条目都必须是 Comparable 或者您必须提供 Comparator。 (这也是您没有看到编译时错误的原因:条目仅在没有显式 Comparator 的情况下转换为 Comparable。)

它与泛型无关,它来自 TreeSet 本身的实现:因为它是一棵二叉树,只有当条目可以某种方式排序时它才有意义。

如果您详细说明您的具体问题,我们可能会帮助您找到您需要的确切数据结构,但一般来说,如果您不关心集合中元素的顺序,HashSet 被使用。同样,一般来说,SetSet 通常是草率设计的标志。

关于Java 泛型和集合集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com