交换数组java的两个邻域元素

问题描述 投票:1回答:2

我是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等等,那么这样做是否可行?

java arrays user-input swap
2个回答
0
投票

对于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,但在某些情况下可以更通用。


0
投票

您使用了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);
}

这将在每个索引之后立即交换一个索引。但是,如果列表的大小为奇数,则最后一个索引永远不会与任何内容交换。

© www.soinside.com 2019 - 2024. All rights reserved.