如何从数组列表中获取所需的两个数字组合?
How to get the required combination of two numbers from an arraylist?
我有一些元素的 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());
}
}
}
我的问题是我怎样才能得到我需要的结果?
for (int i = 0; i < path.size() - 1; i++) {
System.out.println(path.get(i) + "," + path.get(i + 1));
}
您可以尝试使用带有计数器的传统 for 循环来实现此目的:
for (int i = 0; i < path.size() - 1; i++) {
System.out.println(path.get(i) + ", " + path.get(i+1));
}
问题是 .next()
获取下一个元素 并且 前进光标。要使用您的 ListIterator
,您可以这样做:
while (itr.nextIndex() + 1 < path.size()) {
System.out.println(itr.next() + "," + itr.next());
itr.previous(); // back up 1 to get the duplicate
}
我有一些元素的 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());
}
}
}
我的问题是我怎样才能得到我需要的结果?
for (int i = 0; i < path.size() - 1; i++) {
System.out.println(path.get(i) + "," + path.get(i + 1));
}
您可以尝试使用带有计数器的传统 for 循环来实现此目的:
for (int i = 0; i < path.size() - 1; i++) {
System.out.println(path.get(i) + ", " + path.get(i+1));
}
问题是 .next()
获取下一个元素 并且 前进光标。要使用您的 ListIterator
,您可以这样做:
while (itr.nextIndex() + 1 < path.size()) {
System.out.println(itr.next() + "," + itr.next());
itr.previous(); // back up 1 to get the duplicate
}