Поиск и замена узлов в связанном списке - PullRequest
0 голосов
/ 13 марта 2012

Мне нужно, чтобы я мог найти и заменить информацию о пользователе в связанном списке. Я читал несколько уроков и примеров, но, похоже, это не работает. Метод set, используемый для связанных списков, не работает. Поэтому мне интересно, если я реализую это неправильно или что. Любая помощь будет отличной. Кроме того, просто для справки мой связанный список загружается из файла, и в основном это просто пользовательская информация с каждым элементом в отдельной строке.

т.е.

        int index = account.indexOf(hobby);
        account.set(index, "New String");

Код:

private void jButtonP1ActionPerformed(java.awt.event.ActionEvent evt) {
    LinkedList<Account> account = new LinkedList<Account>();
    //user information
    String username = jTextFieldP3.getText();
    String password = jPasswordFieldP1.getText();
    String email = jTextFieldP4.getText();
    String name = jTextFieldP1.getText();
    String breed = (String) jComboBoxP4.getSelectedItem();
    String gender = (String) jComboBoxP3.getSelectedItem();
    String age = (String) jComboBoxP1.getSelectedItem();
    String state = (String) jComboBoxP2.getSelectedItem();
    String hobby = jTextFieldP2.getText();
    //combo boxes
    String passchange = (String) jComboBoxP13.getSelectedItem();
    String emailchange = (String) jComboBoxP14.getSelectedItem();
    String namechange = (String) jComboBoxP6.getSelectedItem();
    String breedchange = (String) jComboBoxP7.getSelectedItem();
    String genderchange = (String) jComboBoxP8.getSelectedItem();
    String agechange = (String) jComboBoxP9.getSelectedItem();
    String statechange = (String) jComboBoxP10.getSelectedItem();
    String hobbychange = (String) jComboBoxP11.getSelectedItem();
    String accountcancel = (String) jComboBoxP5.getSelectedItem();

    Account a = new Account(username, password, email, name, breed, gender, age, state, hobby);
    account.add(a);

    if(username.equals("") || password.equals("") || email.equals("")) // If password and username is empty > Do this >>>
    {
        jButtonP1.setEnabled(false);
        jTextFieldP3.setText("");
        jPasswordFieldP1.setText("");
        jTextFieldP4.setText("");
        jButtonP1.setEnabled(true);
        this.setVisible(true);

    }
    else if(a.onList(username) || a.onList(password) || a.onList(email))
    {
        int index = account.indexOf(hobby);
        account.set(index, "New String");
    }
    else
    {

    }

}

1 Ответ

1 голос
/ 13 марта 2012
int index = account.indexOf(hobby);
account.set(index, "New String");

Проблема здесь в том, что indexOf () вернет -1, потому что он ищет строковое значение внутри списка со значениями Account.

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

for(Account acc : account){
    if(acc.getHobby().equals(hobby)){
        acc.setHobby("New String");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...