给定一个arraylist和Hashmap。
我想在这个集合中添加随机整数。添加时必须检查值是否已经输入。如果是,它应该返回true并且不应该添加到集合中,或者应该添加值。那么哪个集合是其中首选??解释。
现在,如何将整数单独添加到 hashmap 或者如果我们添加到 hashmap 中的键值对是什么,这是模棱两可的?但这是面试中被问到的问题,需要给出一个答案
给定一个arraylist和Hashmap。
我想在这个集合中添加随机整数。添加时必须检查值是否已经输入。如果是,它应该返回true并且不应该添加到集合中,或者应该添加值。那么哪个集合是其中首选??解释。
现在,如何将整数单独添加到 hashmap 或者如果我们添加到 hashmap 中的键值对是什么,这是模棱两可的?但这是面试中被问到的问题,需要给出一个答案
使用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");
}
如果在面试中给出这个问题,我会认为这是一个棘手的问题......如果添加的项目顺序很重要,那么使用 LinkedHashSet,否则使用 HashSet......
您可以简单地使用 ArrayList 来添加值,也可以在添加值之前监控这些值,例如:
List list = new ArrayList();
if (list.contains(whatever)) {
System.out.println("do something");
} else {
}
您也可以使用 Hashmap 来做同样的事情,但这取决于您要输入的问题的要求
您可以简单地使用Collection#contains(...)
.
对于这个特殊的问题,我建议使用 HashMap,因为它本身就可以检查重复值,而无需您做任何事情。
如果你使用了一个 ArrayList,你需要用'indexOf'检查,如果之前已经添加了整数,这需要搜索整个数组。
此外,Hashmaps 是按 key 排序的,这使得搜索效率更高。
就像是IntHashSet
......