【发布时间】:2012-01-22 01:28:53
【问题描述】:
TreeSet 有一个接受比较器的构造函数,这意味着即使您存储的对象本身不是Comparable 对象,您也可以提供自定义比较器。
有无序集的类似实现吗? (例如,HashSet<T> 的替代方案采用“哈希”对象,该对象为可能与对象自己的实现不同的对象 T 计算 equals() 和 hashCode()?)
C++ std::hash_set 给你这个,只是想知道是否有一些适用于 Java 的东西。
编辑:@Max 提出了关于equals() 的一个很好的技术观点——很公平; TreeMap 和 HashMap 键通过 Map.containsKey() 也是如此。但是是否还有其他知名的数据结构允许通过自定义散列器进行组织?
【问题讨论】:
-
顺便问一下,你确定你没有混淆不同的对象域吗?通常,将新方法添加到应用程序域中的对象中没有问题。但是,如果您尝试制作从某些生成的 Axis 客户端(例如)接收到的对象的映射,那么您正在混合不同的域 - WebService 的域和您的应用程序的域。这意味着,从本质上讲,您永远不需要您所要求的。