如何在Java中获取无序字符数组的唯一元素?

时间:2011-05-30 16:48:00

标签: java arrays

如果我有一个无序的字符数组,我怎样才能得到唯一的元素?

1 个答案:

答案 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(..)