如果我有一个无序的字符数组,我怎样才能得到唯一的元素?
答案 0 :(得分:3)
一衬垫:
Set<Character> uniqueChars = new HashSet<Character>(Arrays.asList(array));
(array
需要Character[]
而不是char[]
。否则你必须将其转换为包装数组。
请注意,如果这是家庭作业,您需要更多的算法方法,以表明您了解自己在做什么。以上解决方案可能不适用。但这是它的工作原理:
List
。这是O(1)
,因为数组只支持新的,不可修改的列表。这样做是为了使数组符合List
构造函数所需的HashSet
接口HashSet
是由HashMap
(哈希表)支持的集合。它计算键的哈希值并将它们存储在index = hash下的内部数组中。因此查找是O(1)。HashSet
构造函数只是迭代传递的List
并为每个项目调用add(..)
。在集合中不允许两次相同的项目(根据定义设置不允许重复)。就是这样,因为项目的哈希值与现有哈希值相同,因此新的哈希值将替换旧的哈希值。请注意,允许具有相同哈希值的项目,但不允许具有相同哈希值的项目(.equals(..)
)