Java Arrays.asList(…).contains(…)是如何工作的?
我有以下代码..Java Arrays.asList(…).contains(…)是如何工作的?,java,arrays,list,arraylist,Java,Arrays,List,Arraylist,我有以下代码.. String[] weekEnds={"0","6"}; for(int i=0;i<7;i++){ if(Arrays.asList(weekEnds).contains(i)){ System.out.println("I am in the array"); } } String[]周末={“0”,“6”}; 对于(int i=0;i您正在比较字符串和int。您的数组包含字符串(“0”,“6
String[] weekEnds={"0","6"};
for(int i=0;i<7;i++){
if(Arrays.asList(weekEnds).contains(i)){
System.out.println("I am in the array");
}
}
String[]周末={“0”,“6”};
对于(int i=0;i您正在比较字符串和int。您的数组包含字符串(“0”
,“6”
),但您正在将int传递到比较中
该整数将是一个整数,但整数(1)
不等于“1”
您正在比较苹果和桔子(在本例中是字符串
s和整数
s)
您正在将字符串数组
转换为列表
。然后使用int
值对其调用contains()
。由于该方法将Object
作为参数类型,int
自动装箱为整数
要解决此问题,请编写:
if(Arrays.asList(weekEnds).contains("" + i)) {
您需要有一个int数组才能进行这样的比较
更改此项:
String[] weekEnds={"0","6"};
到
只需更改为Integer[]weekEnds={0,6};
,我认为它会起作用。或者将if
条件更改为
if(Arrays.asList(weekEnds).contains(String.valueOf(i))){
或者将数组更改为
Integer[] weekEnds={0,6};
因为带有“0”
的字符串与0
的整数不同。事实上(长)0L
,(整数)0
和(双精度)0.0
是不同的。
Integer[] weekEnds={0,6};