数组列表或哈希图,用于添加随机整数,同时保留唯一性



给定一个数组列表和哈希图。

我想向这个集合添加随机整数。添加时必须检查是否 值是否已输入。如果是,它应该返回 true 并且不应该添加到集合中,或者值应该是 添加。那么其中哪个系列更受欢迎呢?解释。

现在,如果我们要添加到哈希

图,如何将整数单独添加到哈希图中,或者这里的键值对是什么,这是模棱两可的,但这是面试中被问到的问题,需要给出一个答案

使用 Set,它会处理唯一的条目:

Set<Integer> set = new HashSet<Integer>();
//...
int randomNumber = ...
boolean unique = set.add(randomNumber);
if (unique) {
    System.out.println(randomNumber + " was added to set");
} else {
    System.out.println(randomNumber + " already was in set");
}

您可以简单地使用 ArrayList 添加值,也可以在添加值之前监视值,例如:

List list = new ArrayList();
if (list.contains(whatever)) {
 System.out.println("do something"); 
} else {
   }

您也可以使用Hashmap来做同样的事情,但这取决于根据问题的要求,您要输入什么键

您可以

简单地使用Collection#contains(...) .

对于这个特定的问题,我建议使用HashMap,因为它本机检查重复值,而无需您执行任何操作。

如果你使用了 ArrayList,你需要用 'indexOf' 检查之前是否添加过整数,这需要搜索整个数组。

此外,哈希图按键排序,这使得搜索高效。

类似于IntHashSet

......

..........

http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/all/org/apache/lucene/util/collections/IntHashSet.html

如果在面试中给出这个问题,我认为这是一个棘手的问题......如果添加项的顺序很重要,则使用 LinkedHashSet,否则使用 HashSet...

最新更新