【问题标题】:How to get the required combination of two numbers from an arraylist?如何从数组列表中获取所需的两个数字组合?
【发布时间】:2016-08-26 18:07:07
【问题描述】:

我有一些元素的 ArrayList path = [1, 2, 5, 7]。现在我想从这些元素中获取值,例如:

1,2 
2,5
5,7 

我为此使用了列表迭代器,但我得到的是:

1,2 
2,2     
5,7 
7,7

我看到了这个答案: how to get all combination of an arraylist? 但我不需要这样的所有组合。

我的代码是:

public class iterator {

public static void main(String[] args){
    ArrayList<String> path=new ArrayList<>();
    path.add("1");
    path.add("2");
    path.add("5");
    path.add("7");

    System.out.println(path);
    ListIterator<String> itr =  path.listIterator();  
    while(itr.hasNext())
    {
        System.out.println(itr.next()+ "," + itr.next());
        System.out.println(itr.previous()+ "," + itr.next());
    }

}

}

我的问题是如何获得所需的结果?

【问题讨论】:

  • 您的一般要求是什么?如果您的数组是: [2, 3, 5, 6, 7, 8, 9] ,您想要什么组合?
  • 那我想要:(2,3), (3,5), (5,6), (6,7), (7,8), (8,9)跨度>

标签: java arraylist listiterator


【解决方案1】:
for (int i = 0; i < path.size() - 1; i++) {
    System.out.println(path.get(i) + "," + path.get(i + 1));
}

【讨论】:

  • @Nitu08 您应该接受 shmosel 的回答。点击您问题的分数正下方的复选标记。
  • @Tibrogargan 他们可以检查最能帮助他们的东西。
  • @4castle 这是他的第一个问题,也许他不知道
【解决方案2】:

您可以尝试使用带有计数器的传统 for 循环来实现:

for (int i = 0; i < path.size() - 1; i++) {
    System.out.println(path.get(i) + ", " + path.get(i+1));
}

【讨论】:

  • Cannot find symbol path.length
  • 感谢它的工作......只需要一点改变,而不是 path.length,path.size() 正在工作。
  • @Tibrogargan 人们并不总是在 Eclipse 上编译他们在此处发布的内容。我发布的内容足以解释需要做什么。仅仅因为我输入了 length 而不是 size() 不应该意味着答案需要被否决,不是吗?
  • @Vishal Kamat 你被否决了,因为你的答案不起作用。让它工作,我会删除downvote
  • 好吧,看起来 4castle 已经修好了。谢谢大家 :) 我喜欢这个论坛
【解决方案3】:

问题在于.next() 获取下一个元素 使光标前进。要使用您的ListIterator,您可以这样做:

while (itr.nextIndex() + 1 < path.size()) {
    System.out.println(itr.next() + "," + itr.next());
    itr.previous(); // back up 1 to get the duplicate
}

【讨论】:

  • 显然这不是最佳答案,但如果您想知道为什么 ListIterator 不起作用,这应该会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多