2011-05-30 46 views

回答

3

一行代码:

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(..)
相关问题