метод get (int index) в java - PullRequest
       1

метод get (int index) в java

0 голосов
/ 18 февраля 2020

Я пытаюсь сделать метод get (int index), который возвращает элемент по указанному индексу в списке, но я не вижу, что вернуть. Что у меня будет после tempNode в конце?

public E get(int index) throws IndexOutOfBoundsException {
    Node tempNode = head;
    if (index < 0 || index >= size) {
        throw new IllegalArgumentException("index was out of bounds");
    }
    for (int i = 0; i < index; i++) {
        tempNode = tempNode.getmNextNode();
    }
    return tempNode.;
}

Я использую класс Node:

public class Node<E> {
    private E mElement;
    private Node<E> mNextNode;

    Node(E data) {
        this.setmElement(data);
    }
    public E getmElement() {
        return this.mElement;
    }
    public void setmElement(E element) {
        this.mElement = element;
    }
    public Node<E> getmNextNode() {
        return this.mNextNode;
    }
    public void setmNextNode(Node<E> node) {
        this.mNextNode = node;
    }
}

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

У вас есть getmElement() метод на Node, который будет возвращать нужные вам данные.

Однако, в настоящее время ваш get(int) метод использует необработанную переменную Node, поэтому нет способ задать его для соответствующего типа возврата. В настоящее время tempNode.getmElement() просто вернет Object.

. Вам нужно использовать Node<E>, например, так:

public E get(int index) throws IndexOutOfBoundsException {
    Node<E> tempNode = head;
    if (index < 0 || index >= size) {
        throw new IllegalArgumentException("index was out of bounds");
    }
    for (int i = 0; i < index; i++) {
        tempNode = tempNode.getmNextNode();
    }
    return tempNode.getmElement();
}
1 голос
/ 18 февраля 2020

Вы бы вернули mElement типа E. То, что список составлен из узлов, является деталью реализации. Так что верните return tempNode.eElement, а точнее tempNode.getmElement(), если вы не можете получить к нему прямой доступ из-за модификаторов доступа в поле.

Не знаю, что вы ожидали получить в противном случае.

Примечание что из-за присутствия m Java, вероятно, не распознает его как get метод. Это не очень хорошая идея, в Java вы не используете подобные идентификаторы, удалите m s из ваших идентификаторов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...