collections - 删除重复的数组元素并保留顺序

标签 collections smalltalk pharo

是否有一种标准方法可以删除数组中的重复条目,但保留顺序?

例如

#(c a b a a b) withoutDuplicates "-> #(c a b)"

我曾经使用removeDuplicates,但显然这是Roassal添加的扩展方法(所以我不能总是使用它)

手写的,最好的解决方案(我有)是

a := #(c a b a a b).
d := OrderedDictionary new.
a do: [ :each | d at: each put: true ].
d keys. "-> #(c a b)"

但是有标准的方法吗?

最佳答案

与您的相同,但在输入文本方面较短,而不是在性能方面。

(#(c a f b c a d c a e f f) collect: [ :e | e -> true ]) asOrderedDictionary keys

关于collections - 删除重复的数组元素并保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517001/

相关文章:

java - 在 ArrayList 中查找所需数量的最小 double

windows - Smalltalk 相当于 Windows 的检查工具

smalltalk - 如何覆盖另一个包中的类中的现有选择器

smalltalk - Smalltalk 镜像如何处理 IO?

java - 了解 Comparator 调用比较方法

java - 实时查看...等中包含的集合中包含的集合

smalltalk - Pharo:我可以手动而不是按字母顺序对协议(protocol)中的方法进行排序吗?

smalltalk - 使用 PetitParser 定义左关联解析器

c# - 为什么 C# 不为集合实现 GetHashCode?

JavaScript 相当于 Smalltalk 的开发周期