返回

java-在不同对象类型的列表之间设置操作

发布时间:2022-03-09 01:45:41 350
# php

我有两张单子,一张List localUsers还有List remoteUsers。一个列表是服务器上的本地用户,另一个列表包含通过gRPC获得的来自另一台服务器的用户。它们可能是新的,存在于我们的系统中,需要更新,或者不活动(它们存在于第一个列表中,但不在第二个列表中)。

为了确定哪些用户是哪些用户,我想在这些列表之间执行set操作,但是这些列表是在不同类型的对象之间执行的。为了解决这个问题,我发现了一个使用流的set操作的实现,但它们有点麻烦,而且很难阅读:

// This operation returns a difference between remote users and local users
// signifies new users that don't yet exist on the server
List newUsers = remoteUsers.stream()
.filter(remoteUser ->
localUsers.stream().noneMatch(
localUser ->
localUser.getUserName().equals(checkAddPrefix(remoteUser.getLogin())))).collect(Collectors.toList());

我意识到我可以通过做一些双for循环来消除流的模糊性,但无论如何。。。

查找非活动用户与上面相同,列表切换。

两个组之间的普通用户可以通过

remoteUsers.removeAll(newRemoteUsers)

在不同对象类型的列表之间执行集合操作是否有更干净的方法?差分运算的时间复杂度是O(m * n)对于m = len(localusers), n = len(remoteUsers).

我能做得更好吗?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像