7

ArrayListなどのオブジェクトを含むがありUser、各オブジェクトにはnameandpasswordプロパティがあります。Userこれから特定の「名前」を持つオブジェクトのみを削除するにはどうすればよいArrayListですか?

4

9 に答える 9

24
Iterator<User> it = list.iterator();
while (it.hasNext()) {
  User user = it.next();
  if (user.getName().equals("John Doe")) {
    it.remove();
  }
}
于 2012-05-08T16:03:43.153 に答える
7

次のようなものを使用できます。

           // If you are using java 8
           userList.removeIf(user-> user.getName().equals("yourUserName"));
           // With older version
           User userToRemove = null;
           for(User usr:userList) {
             if(usr.getName().equals("yourUserName")) {
                userToRemove = usr;
                break;
             }
           }
           userList.remove(userToRemove);
于 2016-01-07T11:43:33.627 に答える
7

別の考え:Userクラスをユーザー名で一意に定義でき、次のequalsようなものでオーバーライドする場合:

public boolean equals(Object arg0) {
    return this.name.equals(((user) arg0).name);
}

Userlist を反復せずにを削除できます。あなたはただ行うことができます:

 list.remove(new User("John Doe"))
于 2012-05-08T16:33:21.263 に答える
6

ConcurrentModificationExceptionからオブジェクトを削除しようとしているときに、おそらく に直面するでしょうList。この例外の説明は、 の反復子がArrayListフェイルファスト反復子であることです。たとえば、ランタイムのコレクションが変更されたことを検出すると、例外 (失敗) をスローします。この問題の解決策は、Iterator.

List以下は、特定の条件が満たされたときに要素を反復処理して要素を削除する方法を示す簡単な例です。

List<User> list = new ...

for (Iterator<User> it = list.iterator(); it.hasNext(); ) {

    User user = it.next();
    if (user.getUserEmail().equals(currentUser.getUserEmail())) {
       it.remove();
    }
}
于 2014-06-05T07:35:00.380 に答える
3

あなたは出来る:

  • イテレータでリストをループする
  • リスト内の各項目が適切なユーザーであるかどうかを確認します (名前を確認します)
  • そうである場合は、反復子の remove メソッドを使用します。
于 2012-05-08T16:03:07.497 に答える
1

ユーザーから取得したオブジェクトの ArrayList を検索し、削除したい名前と同じ名前をテストするだけです。次に、そのオブジェクトをリストから削除します。

于 2012-05-08T16:02:53.027 に答える
0

コードは次のようになります:</p>

List<User> users = new ArrayList<User>();

public void removeUser(String name){
    for(User user:users){
        if(user.name.equals(name)){
            users.remove(user);
        }
    }
}
于 2012-05-08T16:06:23.687 に答える
-1
ArrayList<User> userList=new ArrayList<>();
//load data

public void removeUser(String userName){
    for (User user: userList){
        if(user.getName()equals(userName)){
            userList.remove(user);
        }
    }
}
于 2016-12-29T05:36:04.443 に答える