gpt4 book ai didi

ceylon 相当于 Collections.shuffle()

转载 作者:行者123 更新时间:2023-12-01 18:29:51 24 4
gpt4 key购买 nike

有没有一种方法可以“洗牌”一个Iterable(或Sequence),以便元素随后随机排序,类似于Java的Collections.shuffle() ?我查看了 IterableCollectionSequence 的 API 文档,但没有找到任何相关内容。 (旁注:ceylon.language::shuffle 的名称很容易混淆)

我想我可以自己实现随机播放,但我正忙着偷懒:-)

最佳答案

我也去找过这个,没找到。这是一个实现:

import ceylon.collection {ArrayList}
import ceylon.math.float {random}

"Don't interleave multiple iterators!"
Iterable<Element, Absent> shuffle<Element, Absent>(Iterable<Element, Absent> elements)
given Absent satisfies Null => object satisfies Iterable<Element, Absent> {
value list = ArrayList{elements = elements;};
iterator() => object satisfies Iterator<Element> {
variable value index = list.size;
shared actual Element|Finished next() {
value randomIndex = (random() * index--).integer;
if (exists element = list[index]) {
assert (exists randomElement = list[randomIndex]);
list.set(index, randomElement);
list.set(randomIndex, element);
return randomElement;
}
return finished;
}
};
};

关于 ceylon 相当于 Collections.shuffle(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com