簡體   English   中英

如何從列表<>中刪除項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM