2014-08-30 149 views
0

的一個數組列表,我創建了一個類,定義如下查詢對象

public class RegionsWithConstituency { 

String reg_name; 
String const_name; 

public void setRegionName(String reg_name) 
{ 
    this.reg_name = reg_name; 
} 
public String getRegionName() 
{ 
    return reg_name; 
} 

public void setConstituencyName(String const_name) 
{ 
    this.const_name = const_name; 
} 

public String getConstituencyName() 
{ 
    return const_name; 
} 

@Override 
public String toString() 
{ 
    return const_name; 
} 

}

我填充這個類如下:

ArrayList<RegionsWithConstituency> region = new ArrayList<RegionsWithConstituency>(); 

for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject jsonObject = jsonArray.getJSONObject(i); 

      RegionsWithConstituency reg = new RegionsWithConstituency(); 
      reg.setRegionName(jsonObject.optString("Region")); 
      reg.setConstituencyName(jsonObject.optString("Constituency")); 
      region.add(reg); 

      } 

我想找到選區名稱基於區域名稱並將結果保存到String的ArrayList中。一個例子是類似的東西

for (int i = 0; i < region.length(); i++) { 

    if (regionList.Contains(region)){ 
    listofString.add(region.getConstituencyName()) 
    } 
} 

我正在一個C#的背景,我知道如何實現這一個在C#中,但不是在Java,所以我需要一個有關幫助,請隨時問任何問題,如果u不要妥善解決我的問題。

+0

你將不得不執行'等於()'和'hashCode()方法'。 – 2014-08-30 08:48:07

回答

1

如果你想在objects比較list內部或者只是使用contains方法。 在你RegionsWithConstituency對象你應該overrideequalshashcode方法。

@Override 
public boolean equals(Object obj) { 
    // TODO Auto-generated method stub 
    if (this == obj) 
     return true; 

    if (obj == null || (this.getClass() != obj.getClass())) { 
     return false; 
    } 

    RegionsWithConstituency reg = (RegionsWithConstituency) obj; 
    return this.const_name.equals(reg.getConstituencyName()) 
      && this.reg_name.equals(reg.getRegionName()); 
} 

@Override 
public int hashCode() { 
    // TODO Auto-generated method stub 
    return const_name != null ? const_name.hashCode() : 0; 
} 

並檢查它是否包含對象

for (int i = 0; i < region.length(); i++) { 

    if (regionList.Contains(region)){ 
    listofString.add(region.get(i).getConstituencyName()) 
    } 
} 
+0

我真的很感謝你,因爲你的解決方案和其他解決方案一樣工作得很好 – Jmocke 2014-08-30 09:26:49

1

您需要爲區域創建一個get函數,然後執行以下操作。這裏是工作的代碼

Iterator<RegionsWithConstituency> it=region.iterator(); 
      while(it.hasNext()){ 

      RegionsWithConstituency obj = it.next(); 

      if(obj.getRegionName().equals("Region")) 
      { 
      String Constituency=obj.getConstituencyName(); 

      listofString.add(Constituency); 

      //do whatever u wanted to do with it now 
      } 
      } 
+0

我真的很感謝你,因爲你的解決方案和其他解決方案一樣工作得很好 – Jmocke 2014-08-30 09:27:22