Java 这个链表类看起来有效吗?

Java 这个链表类看起来有效吗?,java,linked-list,Java,Linked List,我制作了这个链表类,idk真的知道如何测试它,你认为它有效吗?或者你能解释一下我如何测试它吗 public class List { private int size; private Node head; private Node current; private Node prev; private Node temp; /** * Creates an empty list. * @pre none * @post and empty list is created */

我制作了这个链表类,idk真的知道如何测试它,你认为它有效吗?或者你能解释一下我如何测试它吗

public class List {

private int size;
private Node head;
private Node current;
private Node prev;
private Node temp;

/**
 * Creates an empty list.
 * @pre none
 * @post and empty list is created
 */ 

public List(){
    head = null;    
}

/**
 * Delete the current element from this list. The element after the deleted element becomes the new current. 
 * If that's not possible, then the element before the deleted element becomes the new current. 
 * If that is also not possible, then you need to recognize what state the list is in and define current accordingly.
 * Nothing should be done if a delete is not possible.
 * @pre there is a current element
 * @post the item current pointed to is removed, the element before or after is the new current
 */

public void delete(){
    if(current.getNext() != null){
        current = current.getNext();
        prev.setNext(current);
        size--;
    }
    else 
        if(current.getNext() == null){
        current = prev;
        current.setNext(null);
        resetPrev();
        size--;
    }
}

/**
 * Get the value of the current element. If this is not possible, throw an IllegalArgumentException.
 * @pre the list is not empty
 * @post the current element's data is returned
 * @return value of the current element.
 */

public char get(){
    return current.getItem();
}

/**
 * Go to the last element of the list. If this is not possible, don't change the cursor.
 * @pre there is a current element
 * @post current is now the last element in the list
 */

public void goLast(){
    while (current.getNext() != null){
        current = current.getNext();
    }
}

/**
 * Advance the cursor to the next element. If this is not possible, don't change the cursor.
 * @pre there is a current element
 * @post current is now the element after what it was
 */

public void goNext(){
    if(current.getNext() != null){
        current = current.getNext();
        }
    //else do nothing
}

/**
 * Retreat the cursor to the previous element. If this is not possible, don't change the cursor.
 * @pre
 * @post
 */

public void goPrev(){
    current = prev;
    resetPrev();
}

/**
 * Go to top of the list. This is the position before the first element.
 * @pre
 * @post
 */

public void goTop(){

}


/**
 * Go to first element of the list. If this is not possible, don't change the cursor.
 * @pre none
 * @post current is now pointing to the first node of the list, the head
 */

public void goFirst(){
    current = head;
}

/**
 * Insert the given parameter after the current element. The newly inserted element becomes the current element.
 * @pre none
 * @post newVal is inserted into the list and is now the current element
 * @param newVal is the value to insert after the current element.
 */ 

public void insert(char newVal){
    if(head == null){
        head = new Node(newVal);
        size++;
    }
    else{
        Node current = head;
        while(current.getNext() != null){
            current = current.getNext();
        }
        Node prev = current;
        current = new Node(newVal);
        prev.setNext(current);
        size++;
    }
}

/**
 * Determines if this list is empty. Empty means this list has no elements.
 * @pre none
 * @post a boolean value of the state of the list is returned
 * @return true if the list is empty.
 */

public boolean isEmpty(){
    return head == null;
}

/**
 * Determines the size of the list. The size of the list is the number of elements in the list.
 * @pre none
 * @post size is accessed and returned
 * @return size which is the number of elements in the list.
 */

public int size(){
    return size;
}

public void resetPrev(){
    //reset prev to prev's previous
    Node temp = head;
    while(temp != current){
        temp = temp.getNext();
    }
    prev = temp;
}

public class Node {

    private char item;
    private Node next;

    public Node(char val) {
        this.item = val;
    }

    public char getItem() {
        return this.item;
    }

    public Node getNext() {
        return this.next;
    }

    public void setNext(Node next) {
        this.next = next;
    }
}

}
谢谢你的帮助,我还是个新手,所以我不知道该怎么做,我甚至不知道它是否能一直工作,这就是我想测试它的原因

要测试:

我建议为每种方法编写一些JUnit测试用例。这是你需要开始的地方


如果您使用的是EclipseIDE,LarsVogel是我最喜欢的资源之一。通过他的工作,如果你有任何具体的进一步问题,请更新你原来的帖子。

我们有幸使用j unit,但出于对我的爱,这件事让我困惑-我会读到的,谢谢!