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

10-04 10:19