Java 如何从arraylist中的对象提取特定数据

Java 如何从arraylist中的对象提取特定数据,java,object,arraylist,Java,Object,Arraylist,好的,不确定标题的措辞是否正确,但假设我有三个对象,每个对象都有两个数据字符串(比如一个stateName和一个cityName),存储在arraylist中。是否可以在中输入状态名作为字符串变量(称之为searchStateName),然后使用方法搜索列表中的对象,并将searchStateName与arraylist中每个对象内的stateName进行比较,当找到匹配项时,是否返回与匹配stateName位于同一对象内的cityName 我正在尝试做一些类似的事情,现在,我想自己解决它,但我

好的,不确定标题的措辞是否正确,但假设我有三个对象,每个对象都有两个数据字符串(比如一个stateName和一个cityName),存储在arraylist中。是否可以在中输入状态名作为字符串变量(称之为searchStateName),然后使用方法搜索列表中的对象,并将searchStateName与arraylist中每个对象内的stateName进行比较,当找到匹配项时,是否返回与匹配stateName位于同一对象内的cityName


我正在尝试做一些类似的事情,现在,我想自己解决它,但我已经在过去一个小时的工作,这是完全失去了。有人能给我指出正确的方向吗?

这就是方法。假设您有一个名为
SC
的类,其中有两个实例变量以及它们的getter和setter。您需要在主服务器中初始化其中的3个对象:

SC a = new SC("Illinois ","Chicago ");
SC b = new SC("Michigan ","Detroit");
SC c = new SC("New York"," New York");
然后创建对象
SC
ArrayList
,并将
SC
的3个对象添加到该ArrayList

ArrayList<SC> list = new ArrayList<SC>();
list.add(a);
list.add(b);
list.add(c);
对于每个循环,此方法的实际实现为

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
循环。我故意发表评论。但它会正常工作,并为您提供正确的城市名称

//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;
//}
//公共字符串searchStateName(字符串stateName){
//字符串结果=null;
//对于(int i=0;i

就这样。如果您需要进一步帮助,请告诉我。

您可以用您尝试过的代码更新您的问题吗?首先,您没有使用ArrayList。您正在使用数组。其次,您的方法没有返回字符串(城市名称应该是字符串)。它返回的布尔值表示真或假。你的代码仍然不清楚。你能把所有的东西都贴出来吗?这不是问题,我们也能帮你贴。但我想看看你在数组中添加了州名和城市名的位置。我不清楚其中包含的方法。如果你能发布你所有的代码,我将能够更容易地提供帮助。毕竟,你的代码能有多大。您刚刚开始使用java。@FarazDurrani总的来说,我的程序使用5个不同的类,每个类有100个代码,所以我试图以一种在单个类中工作的方式发布我在每个类中使用的方法。这只是我必须制作的一个程序的一小部分。事实上,最后一件事,我无法理解这一点,这是非常令人沮丧的。我不确定你是否可以在这里进行PM,但如果你愿意,我可以通过它发送我正在处理的所有内容,这样你就可以帮助我解决这个问题。@Chichi230这个代码搞糟了,哈哈。我不明白你为什么要在displayCity(List myList)methodOk中传递List类的实例,我遵循您的代码并理解它,直到这一行“getStateName.equalsequalsIgnoreCase(stateName)”这是什么意思?还有,我没有投你反对票。好吧,让我解释一下。列表中有3个对象(当您将它们添加到列表(list.add(a),list.add(b),…)时就是这样做的)。因此您需要遍历每个对象,从每个对象中获取状态名,然后将其与通过方法参数发送的状态名相匹配,并在i=0时评估它们是否相同;第一个标记可以由list.get提取(i) 。然后在获取第一个对象后,您希望提取出状态名,因此list.get(i).getStateName()。然后使用名为equalsequalsIgnoreCase的内置字符串方法,并为该方法提供状态名:……equalsequalsIgnoreCase(stateName)。然后遍历所有3个对象,直到找到所需的状态,如果为真,则进入if语句,提取城市名称并将其分配给result。当for循环结束时,返回resultToh!!!!可能您对getStateName()的位置感到困惑方法来自?这是SC类中的一个getter方法。你知道POJO、getter和setter吗?
//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;
//}