在子集合中获取没有项目的集合项的Groovy方法是什么。例如:
集合: [1,2,3,4,5,6]
子集合: [1,5,6]
结果应该是: [2,3,4]
编辑: 看起来我做错了什么。这是我的代码的一部分:
def report = Report.get(params.report.id)
def user = User.get(params.user.id)
List<User> availableUsers = []
availableUsers = User.findAllByCompany(company))
List<User> addedUsers = []
addedUsers = (List<User>) session["addedUsers"] ?: []
addedUsers << user
session["addedUsers"] = null
session["addedUsers"] = addedUsers
availableUsers = availableUsers - addedUsers
此代码仅删除addedUsers列表中的最后一个用户。
availableUsers:[John,Jack,Jim]
addedUsers:[John,Jack]
availableUsers - addedUsers:[John,Jim]
每次只删除addedUsers中的最后一项。我猜我错过了一些明显但我无法找到的东西。
答案 0 :(得分:4)
你有没有尝试过显而易见的事情:
result = [ 1, 2, 3, 4, 5, 6 ] - [ 1, 5, 6 ]
因为那是有效的......
在会话中存储域对象将导致hibernate事务之间的对象不同,更好地将id存储在会话中并每次都获取Users(或者如果需要持久化,则将此功能写入域中),像:
addedUsers = session["addedUsers"].collect { User.get( it.id ) } ?: []