2015-06-22 44 views
-1

如何將Java值中的字符串值與ArrayList<DeliveryArea.Address>值相匹配?如何將String值與Java中的Arraylist <Delivery.Address>值進行匹配?

我有一個ArrayList<DeliveryArea.Address>String值。我提取了這兩個值。但是,當我申請條件值不匹配。

DeliveryArea類:

import com.google.gson.annotations.SerializedName; 

import java.util.List; 

public class DeliveryArea { 
    @SerializedName("DeliveryAreaResult") 

    public List<Address> address; 

    public class Address{ 

     @SerializedName("restaurant_delivery_area") 
     public String name; 

     @Override 
     public String toString() { 
      return String.format("%s ", name); 
     } 

    } 
} 

條件是

String uservalue = locality.getText().toString(); 
Log.i("ll", uservalue); 

for (int c = 0; c < ff.size(); c++) { 
    Log.i("ll", "" + ff.get(c)); 
    if(uservalue.equals(ff.get(c))) { 
     System.out.println("Sucess"); 
    } 
    else{ 
     System.out.println("Sucessq"); 
    } 
} 

ArrayList值是...

ff = new ArrayList<DeliveryArea.Address>(); 
ff = deliveryarea.address; 
Log.i("sunder123ererrer",""+ff); 
+0

你能告訴我們你的代碼嗎? ssue?簡單的代碼請也,請理解你不能直接比較不同類型的java,你需要想出一種方法將它們轉換爲一個普通的類型 –

+0

這個codition String uservalue = locality.getText()。toString (); Log.i(「ll」,uservalue); (int c = 0; c

+0

請添加到這個問題,並解釋清楚每一類型的變量,從你的問題的代碼,你把評論的代碼,沒有辦法別人可以做出來的變量類型,FINT拿出你遇到的問題 –

回答

2

當你做這樣的檢查 -

uservalue.equals(ff.get(c)) 

其中uservalue是類型Stringff.get(c)返回類型Address對象。它們不會是平等的,因爲它們是不同類型的對象。另外,java不會自動調用toString()

如果uservalue也包含相同的name,您將不得不手動調用ff.get(c)對象的名稱成員變量以便比較才能正常工作。

if(uservalue.equals(ff.get(c).name)) 

另外,自動呼叫toString()功能爲對象,當要傳遞函數作爲參數傳遞給另一個功能(或在分配給一個變量)僅發生在那裏的變量的類型是String

.equals()函數的情況下,它接受的參數類型爲 - Object - 因此不會自動調用toString()。 (Documentation

+0

非常感謝你的先生 –

+0

不客氣。 –

+0

你爲什麼要檢查'Address'的'toString'方法的結果是否相等? 'uservalue.equals(ff.get(c).name)'仍然有效,如果你改變'toString'方法。 –

0

我不知道你在uservalue

持什麼樣的不同的uservalue值: 你應該更改以下行: if(uservalue.equals(ff.get(c)))

if(uservalue.equals(ff.get(c).name)) 

if(uservalue.equals(ff.get(c).toString())) 
相關問題