我有一個ArrayList
包含一些對象,如User
,並且每個對象都有一個name
和password
屬性。如何才能刪除User
對象,該對象具有來自此ArrayList
的特定「名稱」?如何從Java中的ArrayList中刪除對象?
回答
只需從ArrayList中搜索您從用戶處獲得的對象,然後測試與您想要刪除的名稱相同的名稱。然後從列表中刪除該對象。
人們希望可以進行優化,否則OP將會停留在O(n)實現中。 –
@ X-Zero在哪種情況下,你不知道對象在列表中的哪個位置可以比'O(n)'更好? –
@ X-Zero:如果所有的OP都是一個數組列表,那麼'O(n)'是他所能希望的最好的(單獨去除元素是'O(n)')。 – NPE
,你可以:
- 環比列表與迭代器
- 檢查,如果在你的列表中的每個產品(檢查名稱)
- ,如果它是正確的用戶,請使用remove方法的迭代器。
Iterator<User> it = list.iterator();
while (it.hasNext()) {
User user = it.next();
if (user.getName().equals("John Doe")) {
it.remove();
}
}
看起來OP沒有爲這個問題做任何工作,你不應該給他們免費的代碼。 –
什麼是列表代表????? –
是的我知道了......謝謝 –
您的代碼可能是這樣的:
List<User> users = new ArrayList<User>();
public void removeUser(String name){
for(User user:users){
if(user.name.equals(name)){
users.remove(user);
}
}
}
另一種思考:如果User類可以通過用戶名來唯一確定,如果你忽略的東西,如等於:
public boolean equals(Object arg0){
return this.name.equals(((user) arg0).name);
}
您可以在不遍歷列表的情況下刪除用戶。你可以這樣做:
list.remove(新用戶(「張三」))
你可能面臨着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();
}
}
你可以使用這樣的事情:
arrayList.removeIf(s-> s.getName().contains("yourName"));
什麼是's'?請讓你的答案更具體些。 –
s在此處是謂詞,並且僅在支持Lambda表達式的JDK 1.8中有效。刪除此集合中滿足給定謂詞的所有元素。 – jprism
推薦的方式來解決這個問題:
ArrayList<User> list = new ArrayList<User>();
list.add(new User("user1","password1"));
list.add(new User("user2","password2"));
list.add(new User("user3","password3"));
list.add(new User("user4","password4"));
Iterator<String> iter = list.iterator();
while (iter.hasNext())
{
User user = iter.next();
if(user.name.equals("user1"))
{
//Use iterator to remove this User object.
iter.remove();
}
}
使用迭代器刪除對象比通過簡單地鍵入ArrayList(Object)
進行刪除效率更高,因爲它比Java集合更快,節省20%的時間和標準Java練習。
ArrayList<User> userList=new ArrayList<>();
//load data
public void removeUser(String userName){
for (User user: userList){
if(user.getName()equals(userName)){
userList.remove(user);
}
}
}
迭代遍歷時無法刪除http://stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re – Gangaraju
- 1. 從Java中的ArrayList中刪除對象
- 2. 從Java中的ArrayList中刪除對象
- 3. 從ArrayList中刪除對象
- 4. 如何從Java中的ArrayList中刪除特定的對象?
- 5. 如何從ArrayList中刪除對象?
- 6. 如何從arraylist中刪除對象
- 7. ArrayList從其他ArrayList中刪除對象?
- 8. ArrayList IndexOutOBoundsException從ArrayList中刪除對象後
- 9. 如何從Java ArrayList中刪除重複的對象?
- 10. 刪除ArrayList中的對象Java
- 11. 在Android中從ArrayList中刪除對象
- 12. Java,確保從arrayList中刪除對象時正在刪除對象
- 13. ArrayList中刪除對象
- 14. 在Arraylist中刪除對象
- 15. 如何從基於Java對象的一個成員變量的另一個ArrayList中的ArrayList中刪除對象?
- 16. 從Java的ArrayList <>中刪除對象
- 17. 如何在迭代過程中從arraylist中刪除對象?
- 18. 如何從arrayList中刪除重複的對象值jquery/Javascript
- 19. 從ArrayList中移除對象?
- 20. Java:同時從不同ArrayList中刪除兩個對象
- 21. 如何刪除ArrayList的對象?
- 22. 從ArrayList刪除Java
- 23. 如何使用Javascript或Lodash從arrayList中刪除特定對象
- 24. 如何從Arraylist中刪除隨機對象?
- 25. 如何從arraylist中刪除重複項(舊對象)
- 26. 如何正確地從ArrayList中刪除一個對象?
- 27. Java對象實現Runnable,如何從集合中刪除對象
- 28. 刪除Java中的對象
- 29. 如何從java中的Arraylist中刪除重複的元素
- 30. 如何從java中的鏈表中刪除一個對象?
你能更準確地描述你的問題嗎?寫一段你正在編寫的代碼片段...... – aleroot