如何在不使用 collections.swap 的情况下交换链表中的元素

How to swap elements in a linked list without using collections.swap

我是 java 的初学者。我希望能够在使用我自己的方法或不使用 collections.swap

的同时使用索引值交换元素
import java.util.LinkedList;
import java.util.Scanner;

class Main {
    private static LinkedList<Integer> llist;
  public static void main(String[] args) {
    LinkedList<Integer> languages = new llist<>();
    Scanner s = new Scanner(System.in);

    // add elements in the linked list
    llist.add(5);
    llist.add(4);
    llist.add(3);
    llist.add(2);
    System.out.println("LinkedList: " + languages);
    exchange(3,2);
    System.out.println("LinkedList: " + languages);
  }
  
  public static void exchange(int i, int j) {
    llist.set(i, llist.set(j, llist.get(i)));
}
  
}

每当我构建这个时,都不会弹出错误,但是当我 运行 它时,它会给我 java.lang.NullPointerException.

您的线路:

LinkedList<Integer> languages = new llist<>();

有错误 - 替换为

llist = new LinkedList<Integer>();

于是就变成了

import java.util.LinkedList;
import java.util.Scanner;

public class Main {
    private static LinkedList<Integer> llist;
    public static void main(String[] args) {
        llist = new LinkedList<Integer>();
        Scanner s = new Scanner(System.in);

        // add elements in the linked list
        llist.add(5);
        llist.add(4);
        llist.add(3);
        llist.add(2);
        System.out.println("LinkedList: " + llist);
        exchange(3,2);
        System.out.println("LinkedList: " + llist);
    }

    public static void exchange(int i, int j) {
        llist.set(i, llist.set(j, llist.get(i)));
    }
}

还有

System.out.println("LinkedList: " + languages);

应该是:

System.out.println("LinkedList: " + llist);

因为你并没有真正使用 languages,而是 llist;