【问题标题】:How to pull specific data from an object in an arraylist如何从数组列表中的对象中提取特定数据
【发布时间】:2016-05-25 18:07:09
【问题描述】:

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

我目前正在尝试做类似的事情,并想自己弄清楚,但过去一个小时我一直在做这件事,完全迷失了方向。谁能指出我正确的方向?

【问题讨论】:

  • 你能用你试过的代码更新你的问题吗?
  • 首先,您没有使用 ArrayList。您正在使用数组。其次,您的方法没有返回字符串(城市名称应该是字符串)。它返回一个布尔值,表示真或假。您的代码仍然不清楚。你能把所有的都发上来吗?
  • 数组也不是问题。但我想看看您在数组中添加州名和城市名的位置。我不清楚包含方法。如果您可以发布您拥有的所有代码,我将能够更轻松地提供帮助。毕竟你的代码能有多大。您刚刚开始使用 java。
  • @FarazDurrani 总的来说,我的程序使用 5 个不同的类,每个类有 100 个代码,所以我试图发布我在每个类中使用的方法,以便它们可以在单个类中工作班级。这只是我必须制作的程序的一小部分。实际上是最后一块,我无法弄清楚这一点非常令人沮丧。我不确定你是否可以在这里 PM,但如果你愿意,我可以通过它发送我正在处理的所有内容,以便你帮助我解决问题。
  • @Chichi230 这个代码搞砸了哈哈。我不明白你为什么要在 displayCity(List myList) 方法中传递 List 类的实例

标签: java object arraylist


【解决方案1】:

这就是方法。假设您有一个名为 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");

然后创建对象SCArrayList 并将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;
//}

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

【讨论】:

  • 好的,我按照你的代码理解它,直到这一行 "getStateName.equalsequalsIgnoreCase(stateName)" 这是什么意思?另外,我没有对你投反对票。
  • 好的,让我解释一下。列表中有 3 个对象(您在将它们添加到列表时这样做了(list.add(a), list.add(b), ...)。所以您想要遍历每个对象,并获取状态名称从每个对象中取出,然后将其与您通过方法参数发送的 statename 匹配,并评估它们是否相同
  • 所以当 i = 0;第一个索引可以通过 list.get(i) 提取。然后在到达第一个对象之后,你想提取状态名称,所以 list.get(i).getStateName()。然后使用名为 equalsequalsIgnoreCase 的 Strings 内置方法并将 stateName 提供给该方法: ....equalsequalsIgnoreCase(statename)。
  • 然后遍历所有 3 个对象,直到找到所需的状态,当这是真的时,进入 if 语句并提取城市名称并将其分配给结果。当for循环结束时,返回结果
  • 哦!!!!也许你对 getStateName() 方法从何而来感到困惑?那是 SC 类中的 getter 方法。你知道 POJO 和 getter 和 setter 吗?
猜你喜欢
  • 2015-07-13
  • 2018-09-18
  • 1970-01-01
  • 2020-10-02
  • 2013-10-24
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多