【问题标题】:How do I get two arrays into iterators to go step by step?如何逐步将两个数组放入迭代器中?
【发布时间】:2013-03-11 05:01:18
【问题描述】:

我还是java新手,遇到了这个问题。

我有两个数据数组,每个数组都包含数字细节。

    static List<String> players1 = new ArrayList<String>(); 
    static List<String> players2 = new ArrayList<String>();
// Player 1 array plays player 2 array. List is always different on generation.

我想要做的是在 while 循环中使用这两个字符串来遍历每个 player1 数组列表([4]、[5] 等)字符串,然后获取 player2 字符串([0]、[1] 等) 然后返回 player 1 下一个字符串值。我认为最好的方法是使用迭代器。

   Iterator it = players1.iterator();
   (it.hasNext()) {
   //get array string  
    // ++1?? 
    Iterator p2 = players2.iterator(); 
    (p2.hasNext()) {

       //get array string id.
       //return to next p1 string value.
    }

所以我从 player1 数组中获取一个 id,然后遍历 player2 数组并从那里获取一个 id,然后在 while 循环中返回 player1 迭代器的下一个值,并从 player2 数组中获取下一个 id,依此类推。 ..

我的问题是,这是一个好方法吗?或者有没有一种简单的方法可以逐步循环遍历数组。如果您有任何关于如何改进或使用其他方法的示例,那就太好了。

谢谢 Java 持有者。

【问题讨论】:

  • 不确定,但我认为您的总体概念可以改进。为什么不拥有一个 Object 类 - Player,它具有字段 - id、name 等;比拥有一个集合 - List 吗?也许您可以分享您的主要问题,或者简要介绍您的目标。
  • 我的目标是让 player1 列表播放玩家 2 列表的 id。然而,这两个列表在运行时都是随机生成的,因此大小和 ID 可以不同等。

标签: java list methods arraylist


【解决方案1】:

您不需要在这里使用迭代器。相反,请像这样使用enhanced for loop

for (String player1 : players1) {
    for (String player2 : players2) {
        System.out.println("player1 is: " + player1 + ", player2 is: " + player2);
    }
}

【讨论】:

    【解决方案2】:
    Iterator<String> it1 = players1.iterator();
    Iterator<String> it2 = players2.iterator();
    while (it1.hasNext()&&it2.hasNext()) {
     String id1 = it1.next();
     String id2 = it2.next();
    }
    

    循环结束后

    • 如果it1.hasNext(),则players2 更短。
    • 如果it2.hasNext(),则players1 更短。
    • 如果!it1.hasNext()&amp;&amp;!it2.hasNext(),则两个列表的大小相同。

    【讨论】:

    • 是的,两个列表的大小可以不同,这取决于代。谢谢,我会看看如何收敛。
    • 我用这个,但我有一个问题。我有一个方法可以获取名为 getplayer 的 player1 的 ID,但我似乎无法将 o1 引用到其中?我也试过 toString 。 getPlayer(o1) //同时遍历 id's
    • 对象 o1 = it1.next(); o1.toString();字符串 id = o1.toString(); getPlayer(id);
    • 我不确定我是否理解您的评论,但由于players1players2 是通用列表,您可以使用Iterator&lt;String&gt;
    • 当我尝试获取 it1 的值时,我只是得到一个空指针引用。我需要在每个循环中从玩家 1 和玩家 2 迭代器中获取每个单独的 id。 getId(player1ids); getId(player2ids);
    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多