一个简单的Java代码,用于检查数组中是否存在元素:
import java.util.Arrays;
public class Main {
static int[] numbers = {813, 907, 908, 909, 910};
public static void main(String[] args) {
int number = 907;
//Integer number = 907; // the same thing -- it's not found.
boolean b = Arrays.asList(numbers).contains(number);
System.out.println(b); // => false
}
}
Run Code Online (Sandbox Code Playgroud)
1)为什么在阵列中找不到907?
2)如果有更好的方法,请继续分享您的知识.
更新:
据说,asList将您转换int[]成一个List<int[]>成员:原始列表.但是,我希望以下代码能给我1,但它给了我5:
System.out.println(Arrays.asList(numbers).size());
Run Code Online (Sandbox Code Playgroud)
Ted*_*opp 12
问题是Arrays.asList(numbers)没有按你的想法做.它将您转换int[]为一个List<int[]>成员:原始列表.
您可以进行简单的线性搜索,或者,如果您的numbers数组始终排序,请使用Arrays.binarySearch(numbers, 907);并测试结果是否为负(意味着未找到).
列表不包含基元,因此Arrays.asList(int [])将生成一个List类型为一的条目int[].
此代码有效:
static Integer[] numbers = {813, 907, 908, 909, 910};
public static void main(String[] args) {
Integer number = 907;
boolean b = Arrays.asList(numbers).contains(number);
System.out.println(b); // => false
}
Run Code Online (Sandbox Code Playgroud)
对于你的问题,Arrays.asList(numbers)只要它是一个包含的内容int[]:
这段代码:
static int[] numbers = {813, 907, 908, 909, 910};
public static void main(String[] args) {
int number = 907;
List<int[]> list = Arrays.asList(numbers);
boolean b = list.contains(number);
System.out.println(b); // => false
System.out.println("list: " + list);
for(int[] next : list) {
System.out.println("content: " + Arrays.toString(next));
}
}
Run Code Online (Sandbox Code Playgroud)
有这个结果:
false
list: [[I@da89a7]
content: [813, 907, 908, 909, 910]
Run Code Online (Sandbox Code Playgroud)
如您所见,list包含一个类型的元素int[]([[I表示int[]).它具有最初创建的元素.
| 归档时间: |
|
| 查看次数: |
33933 次 |
| 最近记录: |