簡體   English   中英

在列表中<Object> ,如何保留最近的條目並刪除具有相同字段的先前條目?

[英]In a List<Object>, how can I keep the most recent entry and remove previous entries which have an identical field?

我有一個包含各種 CallLog 對象記錄的列表。 每個 CallLog 都是不同的,當我將它傳遞給我的 ListView 時,每個日志都會正確顯示在我的屏幕上。 然而,我想要做的是刪除具有相同 RemoteAddress 屬性的日志(即給我打電話或接到我電話的人應該只在我的 ListView 中出現一次)。 這是因為我將在其正下方顯示該遠程聯系人的所有日志詳細信息。

我如何創建一個方法(或類),它可以過濾掉我的列表以只保留唯一的遠程地址? 以下是我從核心檢索此日志列表的方法。 它具有 CallLog[] 的形式:

// Filter this
List<CallLog> mLogs = Arrays.asList(LinphoneManager.getCore().getCallLogs());
List<CallLog> mLogs = Stream.<CallLog>of(LinphoneManager.getCore().getCallLogs())
            .collect(ArrayList::new, 
                (a, l) -> { if (!a.stream().anyMatch(o -> ((CallLog) o).remoteaddress.equals(l.remoteaddress))) a.add(l); }, 
                (a, b) -> { a.addAll(b); })

你以前嘗試過這樣的事情嗎? 您可以使用 set 方法而不是 add。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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