【问题标题】:Iterator to return list返回列表的迭代器
【发布时间】:2014-01-05 21:09:06
【问题描述】:

我试图在增强的 for 循环的帮助下实现这一点,但我的问题是,如果我在下面的示例中使用迭代器,我如何确保我的返回类型获取“XYZ”的相应值?

List<Apples> a1 = new List<Apples>();
if(a1.iterator().next().equals("XYZ")
{
   return a1.iterator().next().getFruits();
}

【问题讨论】:

    标签: java list foreach iterator


    【解决方案1】:

    可能你想实现以下

    List<Apples> apples = new List<Apples>();
    for(Apple a : apples) {
     if("xyz".equals(a.getSomethingWhatReturnsString())) return a.getFruits();
    }
    

    【讨论】:

      【解决方案2】:

      为什么在这里使用迭代器?一个简单的get() 就可以解决问题:

      if (a1.get(0).equals("XYZ")) {
          return a1.get(0).getFruits();
      }
      

      当然,如果您打算遍历列表中的所有元素,那么您在这里缺少for。此外,您的代码将不起作用:它是 apples 的列表,您无法将苹果与字符串进行比较!也许您的意思是这样的,将getStringAttribute() 替换为您打算与"XYZ" 进行比较的适当属性:

      for (Apple a : a1) {
          if ("XYZ".equals(a.getStringAttribute())) {
              return a.getFruits();
          }
      }
      

      【讨论】:

      • 如果我使用 get(0),它不会总是选择第一个元素吗?
      • @sagar492 是的,这正是a1.iterator().next() 在列表中所做的:当您创建一个新的迭代器时,迭代从第一个元素开始。
      • @Keppil 不,OP 正在创建两个迭代器,它们都将返回第一个元素
      • 我需要遍历列表并最终找到与“XYZ”匹配的点,当它匹配时,我需要具有相同值的 getFruits 方法
      • a1.getService.iterator.next.equals("XYZ"),然后给我 a1.getService.iterator.next.getFruits 我可以用这个吗?
      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2014-10-23
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多