特にどうという内容ではないのですが、昔メモしたまま残していたのを発見したのでバックアップがてらブログにポスト。

def getSizedQueueBy = { Integer size ->
    List q = []
    return { value ->
        if (q.size() >= size) {
            q = q.tail() + value
        } else {
            q << value
        }
        q
    }
}

// こんな感じで使える
def queue = getSizedQueueBy(3)
assert queue(1) == [1]
assert queue(2) == [1, 2]
assert queue(3) == [1, 2, 3]
assert queue(4) == [2, 3, 4]
assert queue(5) == [3, 4, 5]