groovy/grails,我无法从地图中删除

Ray*_*Ray 1 grails groovy

你能帮我从下面的地图中找出简单删除中的错误(通知输出在它下面)吗?

  public class Issue {
  ...

  def allButThis() {
    println "allButThis ..."
    def all = Issue.list()
    println "all is ${all}"
    all.remove(this.id)
    println "all with ${this.id} removed: ${all}"
    return all
  }

   String toString() {return "${id}: ${title}"}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下结果,即项目2未按预期被删除

  allButThis ...
  all is [1: Issue-1, 2: Issue-2, 3: Issue-3]
  all with 2 removed: [1: Issue-1, 2: Issue-2, 3: Issue-3]
Run Code Online (Sandbox Code Playgroud)

据我所知,这个删除应该有效,例如 http://groovy.codehaus.org/JN1035-Maps,其中"删除"在页面下方描述三分之一.

我正在使用Grails 1.3.7.

谢谢

PS我添加了我的toString()方法(上面),也许我自欺欺人了.

-------------更新----------

我删除了我的toString()方法,并遵循Rob的解决方案,即:

  all.remove(this)
  println "all with ${this} removed: ${all}"
Run Code Online (Sandbox Code Playgroud)

产生:

 all is [momentum.Issue : 1, momentum.Issue : 2, momentum.Issue : 3]
 all with momentum.Issue : 2 removed: [momentum.Issue : 1, momentum.Issue : 3]
Run Code Online (Sandbox Code Playgroud)

Rob*_*ner 6

def all = Issue.list()
Run Code Online (Sandbox Code Playgroud)

这是一个列表,而不是地图.

所以要从这个列表中删除:

all.remove(this)
Run Code Online (Sandbox Code Playgroud)

代替.