HashSet
的一项众所周知的功能是它不允许重复。例如:
HashSet<Integer> h = new HashSet<>();
h.add(5);
h.add(5); // this time it won't allow it, because its a duplicate.
但是,为什么会这样呢?拥有在最佳情况O(1)中添加并在最佳情况O(1)中进行搜索的数据结构似乎很有用,并且如果我有重复项,它将仍然有用。 Java实现HashSet
的方式是否不允许它具有重复项,还是由于某种原因而只是选择?