我有一个List<User> users,其中User一个类有一个属性username.我还有另一个List<User> activeUsers.我们users = activeUsers + inactiveUsers.现在我想提取inactiveUsers从users基于username财产.我使用两个for循环解决了这个问题.我认为这不是有效的方法.所以如果有人知道如何有效地完成,请告诉我.
例如,我有activeUsers [1,3]和用户[1,2,3,4],并希望构建inactiveUsers [2,4].
好吧,基于修改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)