Tag: 集合

为什么我在向TreeSet添加元素时没有获得类转换exception或其他东西

以下是我的代码 class NumberComparator implements Comparator { public int compare(Number o1, Number o2) { return 1; } } public class Ex28 { public static void main(String[] args) { TreeSet set = new TreeSet(new NumberComparator()); set.add(1); set.add(1.4f); set.add(1L); set.add(“1a”); System.out.println(set); } } 因为我已经定义了我自己的Number类型的比较器,但是当我添加任何其他字符串的东西时,它并没有给我任何exception。 它只是工作正常。 我得到了输出 [1, 1.4, 1, 1a] 任何人都可以解释它为什么会发生。

比较Java中的两个集合

我在Java类中有两个集合。第一个集合包含先前的数据,第二个集合包含来自前一个集合的更新数据。 我想比较两个集合,但我不确定有效实现它的最佳方法。两个集合将包含相同数量的项目。 然后基于carType在每个集合中是相同的,我想执行carType方法。 任何帮助表示赞赏

为什么Collections.checkedMap和朋友不常用?

我最近偶然发现了Javadoc的Collection.checkedMap系列函数,用于创建标准集合类型的动态类型安全视图。 考虑到他们在诊断相对常见的程序员错误的集合之上添加了另一层安全性,我认为它们会更受欢迎。 但是出于某种原因,在我参与过的所有大型Java项目中,我都没有看到它们被使用过一次。 我的问题是:Java程序员是否有更频繁地使用这些检查包装器的特殊原因? 或者只是缺乏利益/缺乏对其存在的了解? 编辑 :为了澄清我的问题,集合的通用版本仍然包含类型不安全的function。 Map的containsKey , containsValue , remove和get都可以对Object进行操作。 我的主要问题是,鉴于此类型 – 不安全,为什么更多人不使用已检查的实现来诊断运行时类型违规。

在Collection中查找重复条目

是否有工具或库可根据可实施的特定标准在集合中查找重复条目? 为了使自己清楚:我想根据具体标准比较条目。 所以我认为Predicate返回true或false是不够的。 我不能使用equals 。

ArrayList.java中List接口的冗余实现

可能重复: 为什么ArrayList有“实现List”? 我是java新手我试图看到集合界面的层次结构。 我发现AbstractList.java的签名就像 public abstract class AbstractList extends AbstractCollection implements List 它实现了List接口。 但是,如果你看看子类ArrayList.java的签名,它看起来像 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable 如果你看父类已经实现了List接口那么为什么子类再次实现相同的接口( List )。 这背后是否有具体的原因或要求

为什么在java.util.Collection上有一个方法iterator()

为什么在接口java.util.Collection上定义了iterator()方法,它已经扩展了java.util.Iterable,它定义了这个方法。 我正在考虑某种向后兼容性或在集合级别上对方法编写一些JavaDoc的机会。 还有其他想法吗?

在没有值的情况下向HashMap添加密钥?

有没有办法在不添加值的情况下向HashMap添加密钥? 我知道它看起来很奇怪,但我有一个HashMap<String, ArrayList> amd我想首先能够根据需要创建密钥,然后检查某个密钥是否存在,如果是,则输入适当的值,即ArrayList 那令人困惑吗?

使用SQL或作为集合对列表进行排序?

我的数据库中有一些日期条目。 什么是最好的?: 使用sql语句获取它们并按order by应用。 获取带有sql的列表,并使用collection.sort左右在应用程序中对它们进行排序? 谢谢

hashCode和equals for Collections.unmodifiableCollection()

Collections类有许多静态辅助方法来提供各种集合类型的只读视图,例如unmodifiableSet() , unmodifiableList()等。对于这些视图对象, hashCode()和equals()方法将调用转发给底层集合……有一个奇怪的例外: unmodifiableCollection() 。 JavaDoc 明确指出 : 返回的集合不会将hashCode和equals操作传递给后台集合,而是依赖于Object的equals和hashCode方法。 在后备集合是集合或列表的情况下,这对于保留这些操作的合同是必要的。 我的问题:wtf是这个在谈论? 如果后备集合是一个集合或列表,我希望行为与unmodifiableSet()和unmodifiableList() 。 怎么会违反hashCode / equals合同?

地图在番石榴地图

我有一些代码与Map<String, Map>对象有效(它被实例化为HashMaps的HashMap),但我想知道是否有更好的方法在Guava中表示这个数据结构。 我考虑过Multimap ,但是当Guava中有ListMultimap和SetMultimap时,我没有找到“MapMultimap”。 我也检查了桌子 ,它看起来更像是它,但它的名字让我感到不舒服:我所拥有的绝对不是一张桌子而是一棵树。 (第二个键之间没有重叠) 是否有更好的番石榴替代品或者我应该坚持使用Map<String, Map> ?