# 1 楼答案 一艘班轮: Set<Character> uniqueChars = new HashSet<Character>(Arrays.asList(array)); (该array必须是Character[]而不是char[]。否则,您必须将其转换为包装器数组) 请注意,如果这是家庭作业,您将需要更具算法性的方法,以表明您了解自己在做什么。上述解决方案可能不适用。但它的工作原理如下: 该数组被转换为List。这是O(1),因为数组只是支持新的、不可修改的列表。这样做是为了使数组能够符合List接口,这是HashSet构造函数所需要的 HashSet是由HashMap(哈希表)支持的集合。它计算键的散列,并将它们存储在一个内部数组中,索引=散列。因此,查找是O(1)李> HashSet构造函数只需迭代传递的List并为每个项调用add(..)。相同的项目在集合中不允许出现两次(根据定义,集合不允许重复)。这是因为该项的散列将与现有的散列相同,因此新的散列将替换旧的散列。请注意,允许具有相同哈希的项,但不允许具有相同哈希的项(.equals(..))
# 1 楼答案
一艘班轮:
(该
array
必须是Character[]
而不是char[]
。否则,您必须将其转换为包装器数组)请注意,如果这是家庭作业,您将需要更具算法性的方法,以表明您了解自己在做什么。上述解决方案可能不适用。但它的工作原理如下:
List
。这是O(1)
,因为数组只是支持新的、不可修改的列表。这样做是为了使数组能够符合List
接口,这是HashSet
构造函数所需要的HashSet
是由HashMap
(哈希表)支持的集合。它计算键的散列,并将它们存储在一个内部数组中,索引=散列。因此,查找是O(1)李>HashSet
构造函数只需迭代传递的List
并为每个项调用add(..)
。相同的项目在集合中不允许出现两次(根据定义,集合不允许重复)。这是因为该项的散列将与现有的散列相同,因此新的散列将替换旧的散列。请注意,允许具有相同哈希的项,但不允许具有相同哈希的项(.equals(..)
)