gpt4 book ai didi

java - Set接口(interface)如何保证不重复

转载 作者:行者123 更新时间:2023-12-01 18:46:48 25 4
gpt4 key购买 nike

今天面试官问我:Set如何保证不重复?

最佳答案

答案就在add方法的源代码中。例如在TreeSet的源代码中,add方法的实现如下:

public boolean add(E e) 
{
return m.put(e, PRESENT)==null;
}

其中,PRESENTObject类的对象。而mNavigableMap的对象。此 NavigableMap m 用于将元素 e 存储为 key 并将 PRESENT 存储为它的到给定的键e。因此,m 中的每个键都具有相同的对象 PRESENT。 oracle 文档中定义的 Mapput 方法是:

Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced.
...
...
Returns: the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key.)

因此,当您将重复元素放入集合中时,该元素将作为值为 PRESENT 的键放入 NavigableMap 中。如果 NavigableMap 中不存在此键,则 put 方法返回 null,因此m.put(e,PRESENT)==null 返回 true,我们知道该元素已添加。如果该键已存在于 NavigableMap 中,则 put 方法将覆盖 keyvalue e NavigableMap 中使用 PRESENT 并返回旧值(即 PRESENT),因此m.put(e,PRESENT)==null 返回 false,我们知道该元素尚未添加。

关于java - Set接口(interface)如何保证不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17432672/

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