[英]issue with Arrays.asList()
我有一個非常簡單的程序,我只需要檢查數組中的值。 我有一個名為bulkBean的類。 就是這個。
public class bulkBean {
private int installmentNo;
private double amount;
public int getInstallmentNo() {
return installmentNo;
}
public void setInstallmentNo(int installmentNo) {
this.installmentNo = installmentNo;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
現在我的程序中有一個這個bulkBean類型的數組,這是我的程序。
import java.util.Arrays;
public class test {
public static boolean scan_bulkList(bulkBean[] bulkList, int i) {
int[] arr = new int[bulkList.length];
for(int x=0;x<bulkList.length;x++){
arr[x] = bulkList[x].getInstallmentNo();
}
for(int j = 0; j< arr.length ;j++){
System.out.println("INFO: array "+j+" = "+arr[j]);
}
if (Arrays.asList(arr).contains(i) == true) {
return true;
} else {
return false;
}
}
public static void main(String[] arg){
bulkBean bb1 = new bulkBean();
bb1.setInstallmentNo(1);
bb1.setAmount(5500);
bulkBean bb2 = new bulkBean();
bb2.setInstallmentNo(2);
bb2.setAmount(4520);
bulkBean[] bulkArray = new bulkBean[2];
bulkArray[0] = bb1;
bulkArray[1] = bb2;
boolean a = scan_bulkList(bulkArray,1);
System.out.println("val = "+a);
}
}
我創建了2個批量bean實例,並為它們設置了值。 然后我將這兩個實例添加到一個數組中。 然后我將該數組傳遞給方法以檢查值(也作為參數給出。在這種情況下,它是1.)。 如果數組包含該值,則應返回true,否則返回false。 無論我輸入什么價值,它都會返回false。 為什么我會遇到這個問題?
Arrays.asList()
返回一個具有單個元素的List - 一個數組。 所以,你實際上是在與數組進行比較。 您需要與數組中的每個值進行比較。
正如TheListMind所說,在int[]
上采用的Arrays.asList()
為您提供了一個包含該數組的列表。
就個人而言,我會直接構造List而不是構造數組,甚至更好(不需要數組實例化),在迭代批量數組時進行測試:
for(int x=0;x<bulkList.length;x++){
if (bulkList[x].getInstallmentNo() == i){
return true;
}
}
return false;
你在這里犯的錯誤是,你創建了int數組,它必須是Integer數組,因為Arrays.asList().contains(Object o);
使輸入參數也為Integer(Integer i)
。 int
不是對象Integer
是對象。 希望它會奏效。
int[] arr = new int[bulkList.length];
改成:
Integer[] arr = new Integer[bulkList.length];
更改方法如下,以避免並發症:
public static boolean scan_bulkList(bulkBean[] bulkList, int i) {
int[] arr = new int[bulkList.length];
for(int x=0;x<bulkList.length;x++){
arr[x] = bulkList[x].getInstallmentNo();
if (bulkList[x].getInstallmentNo()==i) {
return true;
}
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.