给出一个arraylist和Hashmap。
我想在这个集合中添加随机整数。虽然添加必须检查是否 值已经输入或者没有。如果是,它应该返回true并且不应该添加到集合中,或者值应该是 添加。哪个集合首选?解释
现在,如果我们要添加到hashmap,那么如何将整数单独添加到hashmap或者这里的键值对是多么模糊?但这是受访者质疑的问题,需要给出一个答案
答案 0 :(得分:1)
使用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");
}
答案 1 :(得分:0)
您可以简单地使用ArrayList添加值,也可以在添加值之前监视这些值,例如:
List list = new ArrayList();
if (list.contains(whatever)) {
System.out.println("do something");
} else {
}
您也可以使用Hashmap执行相同的操作,但是根据需要,它取决于您要输入的键的问题
答案 2 :(得分:0)
您只需使用Collection#contains(...)
。
答案 3 :(得分:0)
对于这个特殊问题,我建议使用HashMap,因为它本身会检查重复值,而不必做任何事情。
如果使用了ArrayList,则需要检查'indexOf',如果之前添加了整数,则需要搜索整个数组。
此外,Hashmaps按键排序,这使搜索更有效。
答案 4 :(得分:0)
类似于IntHashSet
................
答案 5 :(得分:0)
如果在面试中给出这个问题,我会认为这是一个技巧问题...如果添加的项目顺序很重要,那么使用LinkedHashSet,否则使用HashSet ......