我已经尝试过这篇文章: Java, Simplified check if int array contains int
并尝试了这个
int[] temp = {3,9,15,21,27,33,39};
HashSet<Integer> otherBy3 = new HashSet<Integer>(Arrays.asList(temp));
基于我在上述链接上看到的帖子,指示我这样做:
HashSet<Integer> set= new HashSet<Integer>(Arrays.asList(intArray));
set.contains(intValue)
但我一直收到此错误
cannot find symbol
symbol : constructor HashSet(java.util.List<int[]>)
location: class java.util.HashSet<java.lang.Integer> HashSet<Integer> otherBy3 = new HashSet<Integer>(Arrays.asList(temp));
任何帮助将不胜感激
答案 0 :(得分:2)
更改
int[] temp = ...
到
Integer[] temp = ...
答案 1 :(得分:2)
Integer[] temp = {3,9,15,21,27,33,39};
HashSet<Integer> set= new HashSet<Integer>(Arrays.asList(temp));
System.out.println(set.contains(3));
答案 2 :(得分:1)
将 int 更改为整数,因为您要将列表声明为通用整数
Integer[] temp = new Integer[] { 3, 9, 15, 21, 27, 33, 39 };
HashSet<Integer> otherBy3 = new HashSet<Integer>(Arrays.asList(temp));
otherBy3.contains(13);
答案 3 :(得分:1)
告诉你真正的问题是“如何在int []数组中找到一个整数”,为什么不使用Arrays.html#binarySearch。它是一个单线程,非常快的O(log n)并且是这种做法的常用方法。唯一的预先要求是您的列表已经排序,而您的列表似乎是(不是吗?)。
int[] temp = {3,9,15,21,27,33,39};
int k = 28; //Not present in temp
if (Arrays.binarySearch(temp, k) > 0) {
//key found
}
else {
//key not found - returns -5 (negative indicating not found)
}
答案 4 :(得分:0)
我觉得有点令人不安的是,构建几个临时对象被认为比简单的怪异循环“更短”:
int[] temp = {3,9,15,21,27,33,39};
boolean found = false;
for (int i=0; i<temp.length && !found; ++i) {
found = valueToFind == temp[i];
}
与高开销方法的代码量大致相同。