2014-08-30 193 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