【问题标题】:iterate declared arraylists in java在java中迭代声明的arraylists
【发布时间】:2012-12-05 20:45:59
【问题描述】:

我有一个类似的问题,描述如下:

iterate static int values in java

不同之处在于,在我的班级中,我的元素是 ArrayLists(所有 ArrayLists 都包含相同类型的元素),而不是原始类型。

我想知道是否可以迭代元素并在这个循环中迭代声明的 ArrayList?

【问题讨论】:

  • 你能举个例子吗?你的问题有点含糊。 ArrayLists 包含什么?其他引用类型?
  • 是的,它是另一种引用类型。
  • 所以你澄清一下:你有一个引用类型为AArrayList,你想遍历你的ArrayList,这样你就可以访问这些A对象中的每一个?
  • 我相信原始问题的解决方案会比问题本身更容易。所以这里的关键是了解他想要什么:)
  • 是的,完全正确。与帖子中的链接类似,但我有 ArrayLists 而不是整数。我想对它们进行迭代。

标签: java reflection loops


【解决方案1】:

您可以直接迭代ArrayLists,因此您的示例与您发布的链接不同,它们需要使用反射来迭代它们,因为它们尚未分组到容器中:

class MyClass {
   public static ArrayList<A> myList = new ArrayList<>(
                                       Arrays.asList(new A[]{ A1, A2, ..., AN);

   public static void main(String[] args) {
       // iterate over your list
       for(A a : myList) {
          // do something with A object
       }
   }
}

【讨论】:

  • 谢谢!事实上,它看起来是一个足够的解决方案。无论如何,现在我将尝试对此进行编码。再次非常感谢。
【解决方案2】:

有几种方法可以迭代引用类型的ArrayList&lt;Type&gt; 我发现以下方法很有用,你可以自己尝试一下。

A.最常见/最简单的方法是使用计数器 列出它的元素

    ArrayList<Person> persons = new ArrayList<Person>();
    //Add some person objects to the list
    for(int i=0;i<persons.size();i++){    
    System.out.println(persons.get(i));
    }

B.使用迭代器

   for (Iterator i = persons.iterator(); i.hasNext();) {
     Object listElement = i.next();
     System.out.println(listElement);
   }

C. For/in 循环

  for (Person listElement : persons) {
     System.out.println(listElement); 
   }

您可以使用这 3 种方法中的任何一种来完成您的工作, 但建议使用最后一种方法,即 For/in 循环 因为您不必使用计数器(通常称为 icount)或 Iterator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2011-07-26
    • 2018-12-09
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多