我是java的新手,通常都是编写python代码,所以你可以按照自己的意愿向我投票,只要它能帮助我理解。
交换用户输入数组的两个邻域元素是否更少“贪婪”的方式?
目前我有:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
System.out.println("Enter some numbers:");
while (in.hasNextInt()) {
list.add(in.nextInt());
}
System.out.println("ArrayList Before: "+ list);
Collections.swap(list, 0, 1);
System.out.println("ArrayList After: "+ list);
}
它只改变第一个和第二个,但是如果我想将3和4改为4和3等等,那么这样做是否可行?
对于arraylists,您可以使用索引来获取特定位置。例如,你可以使用
list.get(i) //where i is equal to the index you require
list.set(i, x) // where i is the index, and x is the value that you want to replace it with
编辑:祝你好运学习java顺便说一句,如果你对列表和集合感兴趣,看看链表,它们类似于arraylists,但在某些情况下可以更通用。
您使用了API中的Collections.swap方法,根据API,您只需要更改您的交换3和4
Collections.swap(list, 0, 1);
排队到Collections.swap(list, 3, 4);
查看here(the API),了解更多信息。
编辑:在回应评论时,我会以这种方式这样做
for(int i = 0; i<list.size()-1; i+=2){
System.out.println("ArrayList Before: "+ list);
Collections.swap(list, i,i+1);
System.out.println("ArrayList After: "+ list);
}
这将在每个索引之后立即交换一个索引。但是,如果列表的大小为奇数,则最后一个索引永远不会与任何内容交换。