2012-03-12 25 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

基本的に、リストを作成すると、indexOfメソッドは、以前に配置したオブジェクトに対してのみ意味のある値を返すことが期待できます。しかし、特定のフィールドで特定の値を持つ要素のリストを検索する必要があります。リストはあなたのためにこれを行うことはできません。サイクルのために手動で検索し、内部のすべてのオブジェクトをチェックする必要があります。次に、あなたが望むものを何でも検索し、あなたが望むものを変更することができます。 –

+0

甘いおかげでそれを理解しようとする –