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

我正在开发一个应用程序,其中包含一个票证列表,有用户的添加票证和删除票证选项。添加选项工作正常,但删除选项不起作用,这是票证列表代码


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);

}

谁能告诉我删除或删除功能有什么问题?


aluckdog
浏览 125回答 1
1回答

皈依舞

这是因为当您使用以下代码时:ticketList.remove(ticket);删除方法将在删除之前检查列表中是否有确切的对象项。因此,在您尝试从列表中删除票证对象之前,您的票证对象可能已经更改。您可以从列表文档中看到详细信息:公共抽象布尔删除(对象 o)从此列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。如果此列表不包含该元素,则它保持不变。更正式地说,删除索引为i最低的元素,使得(o==null ? get(i)==null : o.equals(get(i)))(如果存在这样的元素)。如果此列表包含指定的元素(或者等效地,如果此列表由于调用而发生更改),则返回 true。你需要的可能是List.remove(int index)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java