为了账号安全,请及时绑定邮箱和手机立即绑定

如何从列表中删除项目<>?

如何从列表中删除项目<>?

aluckdog 2022-08-17 15:56:59
我正在开发一个应用程序,其中包含一个票证列表,有用户的添加票证和删除票证选项。添加选项工作正常,但删除选项不起作用,这是票证列表代码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);}谁能告诉我删除或删除功能有什么问题?
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

这是因为当您使用以下代码时:

ticketList.remove(ticket);

删除方法将在删除之前检查列表中是否有确切的对象项。因此,在您尝试从列表中删除票证对象之前,您的票证对象可能已经更改。

您可以从列表文档中看到详细信息:

公共抽象布尔删除(对象 o)

从此列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。如果此列表不包含该元素,则它保持不变。更正式地说,删除索引为i最低的元素,使得(o==null ? get(i)==null : o.equals(get(i)))(如果存在这样的元素)。如果此列表包含指定的元素(或者等效地,如果此列表由于调用而发生更改),则返回 true。

你需要的可能是List.remove(int index)。


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信