我有一个列表,其中包含各种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方法而不是添加方法。