2012-03-12 5 views
0

링크 된 목록의 사용자 정보를 찾아서 바꿀 수 있어야합니다. 여러 자습서와 예제를 읽었지 만 작동하지 않는 것 같습니다. 연결된 목록에 사용 된 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
int index = account.indexOf(hobby); 
account.set(index, "New String"); 

문제는 여기가 계정 값 목록 내부 문자열 값을 검색하기 때문에 같이 IndexOf()는 -1을 돌려 보낼 SI .

목록에서 해당 요소의 필드로 검색 할 수 없습니다. 해당 계정을 수동으로 검색 한 다음 취미 필드를 설정해야합니다.

for(Account acc : account){ 
    if(acc.getHobby().equals(hobby)){ 
     acc.setHobby("New String"); 
    } 
} 
+0

고마워.하지만 사용자 이름을 먼저 찾았다 고 할 수 있습니다. 어떻게하면 다음 노드마다 반복하고 그런 식으로 바꾸겠습니까? 주로 사용자 이름이 변경되지 않기 때문입니다. 나는 다른 모든 것을 바꾸는 옵션을 원합니다. –

+0

기본적으로 List를 만들면 indexOf 메서드가 이전에 입력 한 객체에 대해서만 의미있는 값을 반환 할 것으로 기대할 수 있습니다. 그러나 특정 필드에서 특정 값을 가진 요소를 목록에서 검색해야합니다. 목록은 당신을 위해 이것을 할 수 없습니다. for 사이클을 수동으로 검색하고 내부의 모든 객체를 확인해야합니다. 그러면 원하는대로 검색하고 원하는 것을 수정할 수 있습니다. –

+0

고마워요. 고맙습니다. –