Clojure列表与向量对集

Bla*_*sad 17 clojure

我是Clojure的新手.如果这是一个愚蠢的问题,请道歉!

每次我不关心项目的顺序时,我应该使用集合而不是向量或列表吗?在没有必要订购时,在这三者之间做出决定的共同标准是什么?

Art*_*ldt 21

这实际上取决于你将如何使用这些物品.

  • 如果您要搜索项目,请使用一组.
  • 如果您将按顺序处理它,请使用列表.
  • 如果您将它切成均匀大小的块(如排序时),请使用矢量.
  • 如果需要计算长度,请使用向量.
  • 如果您要手动输入这些,请使用矢量(以节省一点引用)

在实践中,我看到的大部分处理都涉及将数据转换为seq处理,因此列表和向量之间的区别通常是个人品味.

  • 集合也计算在内. (3认同)

Chu*_*uck 9

一般来说,当你的主要关注点是"这个群体中的这个东西吗?"时,你需要一个集合.除了不保留顺序之外,集合也只保持给定值一次.因此,如果您关心值的精确放置,矢量就更符合您的要求.如果您主要关心会员资格测试,那么设置更合适.