[英]How to remove an item from List<>?
我正在开发一个应用程序,其中包含票证列表,为用户提供了添加票证和删除票证选项。 添加选项可以正常工作,但删除选项却不能,这是故障单列表代码
public class TicketList {
private List<Ticket> ticketList;
public TicketList() {
ticketList = new ArrayList<>();
}
public List<Ticket> getTicketList() {
return ticketList;
}
public void setTicketList(List<Ticket> ticketList) {
this.ticketList = ticketList;
}
public void addTicketToList(Ticket ticket) {
ticketList.add(ticket);
}
public void removeFromList(Ticket ticket) {
ticketList.remove(ticket);
}
@Override
public String toString() {
return "TicketList{" + "ticketList=" + ticketList + '}';
}
}
在另一个活动中的删除功能不起作用:
private void deleteTicket() {
TicketList ticketList = MyPreferencesManager.getInstance(this).getTicketList();
Ticket ticket = MyPreferencesManager.getInstance(this).getTicket();
ticketList.removeFromList(ticket);
MyPreferencesManager.getInstance(this).putTicketList(ticketList);
}
尽管add函数可以正常工作:
private void saveTicket() {
TicketList ticketList = MyPreferencesManager.getInstance(this).getTicketList();
Ticket ticket = new Ticket();
ticket.setUsername(username.getText().toString());
ticket.setPassword(password.getText().toString());
ticketList.addTicketToList(ticket);
MyPreferencesManager.getInstance(this).putTicketList(ticketList);
}
谁能告诉我删除或删除功能出了什么问题?
这是因为当您使用以下代码时:
ticketList.remove(ticket);
remove方法将在删除之前检查列表中是否有确切的对象项 。 因此,在尝试从列表中删除票证对象之前,它可能已更改。
您可以从列表文档中查看详细信息:
公共抽象布尔移除(对象o)
如果存在指定元素,则从列表中删除该元素的第一次出现(可选操作)。 如果此列表不包含该元素,则它保持不变。 更正式地讲,删除索引i最低的元素,使得(o == null?get(i)== null:o.equals(get(i)))(如果存在这样的元素)。 如果此列表包含指定的元素(或者等效地,如果此列表由于调用而更改),则返回true。
您可能需要的是List.remove(int index) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.