从另一个对象列表中提取对象列表

Dig*_*nta 6 java

我有一个List<User> users,其中User一个类有一个属性username.我还有另一个List<User> activeUsers.我们users = activeUsers + inactiveUsers.现在我想提取inactiveUsersusers基于username财产.我使用两个for循环解决了这个问题.我认为这不是有效的方法.所以如果有人知道如何有效地完成,请告诉我.

例如,我有activeUsers [1,3]和用户[1,2,3,4],并希望构建inactiveUsers [2,4].

gio*_*shc 0

好吧,基于修改User问题的类别和性质的限制,没有比o(n^2)两个列表(即两个循环)更少的方法了。当然,如果每种类型都有两个列表,那么问题就解决了。

但因为你不能比逻辑是:(假设你的结构只是列表)

Iterate users list (o(n)) :
   - Search the active users list for the current user (o(n)) 
Run Code Online (Sandbox Code Playgroud)

不管你怎么看你都会得到o(n^2)

如果您可以修改为具有激活属性,您可以通过一次搜索User轻松地将问题减少到o(n)