ArrayList
などのオブジェクトを含むがありUser
、各オブジェクトにはname
andpassword
プロパティがあります。User
これから特定の「名前」を持つオブジェクトのみを削除するにはどうすればよいArrayList
ですか?
質問する
52993 次
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);
}
User
list を反復せずにを削除できます。あなたはただ行うことができます:
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 に答える