【发布时间】:2016-09-15 07:32:06
【问题描述】:
我试图迭代一个列表,在谷歌搜索后,我找到了一个如下解决方案:
value([0,1,2,3,4,5,6].sort{new Random()}?.take(1)[0])
这部分我没看懂: 排序{新随机()}
有人能解释一下吗? 以及take方法属于哪个类?
【问题讨论】:
-
在我看来
Random类没有得到有效使用。该类本身不是Comparable,Groovy 也没有为该类定义任何默认强制转换(除了已经为Object定义的强制转换)。所以排序值受 Groovy 生成的比较器的支配,它没有其他方法来比较对象,最终会比较它们的哈希码。这肯定会确保结果中的一些随机性,但不会比排序闭包是{new Object()}更重要。 -
无论如何,最初的程序员可能打算对列表进行洗牌,他们的代码就是这样做的,但效率很低。改组也是不可重现的,如果最初的程序员倾向于这样做,这将是使用
Random类的特性的一个优势。
标签: list sorting random groovy