Как создать метод с пустым списком параметров в Java

#java #methods #linked-list

#java #методы #связанный список

Вопрос:

У меня проблемы с мозгом, и по какой-то причине я не могу понять, как написать метод, в котором параметры пусты.

У меня есть метод здесь (пустой)

 public void removeRepeat() {
}
  

Это для связанного списка, и я хочу удалить повторы. У меня есть другие методы ниже, которые я собираюсь использовать для этого:

 public boolean remove(Object element) {
        Node<T> current = head;
        if(isEmpty()) {
            return false;
        }
        if(current.getValue() == element){
            head = head.getNext();
            size--;
            return true;
        }
        while(current.getNext().getValue() != element) {
            current = current.getNext();
            if(current == null) {
                return false;
            }
        }
        if(current.getNext().getNext() == null) {
            tail = current;
        }
        current.setNext(current.getNext().getNext());
        size--;
        return true;
    }
  

У меня также есть метод set и еще много чего, но мой вопрос, как правило, заключается в том, как написать метод, если параметров нет. Мне просто создать новую переменную? Как мне получить доступ к списку, который он хочет, чтобы я изменил? Я думаю создать цикл for для проверки повторений, а затем удалить повторяющийся элемент, но я не уверен, как построить цикл for.
for (int i=0; i< ???; i )

Комментарии:

1. Вы можете получить доступ ко всем переменным экземпляра из своего метода

Ответ №1:

Вообще говоря, существует четыре основных способа доступа к переменной внутри метода в Java:

  • Укажите переменную в качестве параметра:
 public void removeRepeat(SomeObject obj)
{
    // do something with obj
}
  
  • Пусть переменная будет членом (похоже, это верно для head вашего второго фрагмента кода):
 SomeObject obj = new SomeObject();

public void removeRepeat()
{
    // do something with obj
}
  
  • Объявите переменную локально, то есть внутри метода:
 
public void removeRepeat()
{
    SomeObject obj = new SomeObject();
    // do something with obj
}
  
  • Должен ли он быть доступен статически где-нибудь:
 // some other class
public class SomeClass
{
    public static final Object obj = new SomeObject();
}

...

// then in your class:

public void removeRepeat()
{
    SomeObject obj = SomeClass.obj;
    // do something with obj
}

  

Я рекомендую ознакомиться с некоторыми основами Java, это должно прояснить некоторые заблуждения, которые у вас могут возникнуть по этому поводу.

Ответ №2:

Судя по вашему remove(Object element) методу, у вас есть класс, который содержит a head и tail поле, а также size поле.

Если вы добавляете новый метод removeRepeat() в тот же класс, вы можете продолжить и получить доступ к этим полям, как в remove(Object) методе. Например,

 public void removeRepeat() {
    // Make a method-local copy of the class's "head" field.
    Node<T> current = head;
    // Iterate through the list here:
    while (current != null) {
        // do something
        current = current.getNext();
    }
    etc...
 }