好的,不确定标题是否正确,但说我有三个对象,每个对象有两个数据字符串(比如说stateName和cityName)存储在arraylist中。是否可以作为字符串变量输入状态名称(称为searchStateName),然后通过方法搜索列表中的对象,并将searchStateName与arraylist中每个对象内的stateName进行比较,并在找到匹配项时让它返回与匹配的stateName在同一对象内的cityName吗?
我正在尝试做类似的事情,并希望自己弄清楚,但我在过去的一小时里一直在研究这个问题,而且我完全迷失了。有人能指出我正确的方向吗?
答案 0 :(得分:0)
这是方法。假设您有一个名为SC
的类,并且您有两个实例变量,以及它们的getter和setter。您需要在main中初始化它们的3个对象:
SC a = new SC("Illinois ","Chicago ");
SC b = new SC("Michigan ","Detroit");
SC c = new SC("New York"," New York");
然后创建ArrayList
对象SC
并将SC
的这3个对象添加到该ArrayList。
ArrayList<SC> list = new ArrayList<SC>();
list.add(a);
list.add(b);
list.add(c);
现在调用搜索州名称的方法,如果找到则返回城市名称:
this.searchStateName("Illinois");
使用for-each
循环实现此方法的实际操作:
public String searchStateName(String stateName){
String result = "No city found.";
for (SC sc : list )
if (sc.getStateName().equalsIgnoreCase(stateName)){
result = sc.getCityName();
break;
}
}
return result;
}
如果您对for-each
循环感到不舒服,那么您可以使用下面的常规for
循环。我是故意评论的。但它会正常工作,并为您提供正确的城市名称。
//public String searchStateName(String stateName){
// String result = null;
// for (int i = 0; i < list.size(); i++){
// if (list.get(i).getStateName() .equalsIgnoreCase(stateName)){
// result = list.get(i).getCityName();
// break;
// }
// }
// return result;
//}
就是这样。如果您需要进一步的帮助,请告诉我。