0
如果我有一个无序的字符数组,我该如何获得独特的元素?如何在Java中获得无序字符数组的独特元素?
如果我有一个无序的字符数组,我该如何获得独特的元素?如何在Java中获得无序字符数组的独特元素?
一行代码:
Set<Character> uniqueChars = new HashSet<Character>(Arrays.asList(array));
(该array
将需要Character[]
不char[]
否则,你就必须把它转换为包装阵列。)
需要注意的是,如果这是家庭作业,为了表明你理解你在做什么,你需要更多的算法。上述解决方案可能不适用。但它是如何工作的:
List
。这是O(1)
,因为数组刚刚支持新的,不可修改的列表。这样做是为了使阵列可以符合HashSet
构造函数要求的List
接口HashSet
是由HashMap
(哈希表)支持的集合。它计算密钥的散列并将它们存储在内部数组中,位于index = hash下。因此查找是O(1)。HashSet
构造函数只是简单地迭代通过的List
并且为每个项目调用add(..)
。相同的项目在集合中不允许两次(按定义设置不允许重复)。这是如此,因为该项目的哈希将与现有哈希相同,因此新项目将取代旧项目。请注意,允许使用相同散列的项目,但不允许那些也相同的项目(.equals(..)
)