Elixir MapSet与Enum.member?

问题描述 投票:3回答:3

我需要保留唯一的值,我很困惑我应该使用哪种数据结构。稍后我将只阅读整个数据结构。

  • 一种方法是使用仅包含唯一元素的MapSet
  • 第二种方法是每次用Enum.member?检查物品是否已经存在 - 但我可以通过MapSet轻松保证。

我不确定在这种情况下哪种方法更好用。哪个更有效率,哪个更好实践?

elixir
3个回答
4
投票

如果你把你的数据保存在MapSet中,那么Enum.member?实际上会在下面调用MapSet.member?,所以你将拥有MapSet的所有优势。您可以看到相关的协议实现here


1
投票

我认为你混淆了数据结构和qazxsw poi。 Map Set是一个实现qazxsw poi协议的数据结构(和模块)。你可以在MapSet上调用protocols,但这不是必需的:

Enumerable

输出:

Enum.member/2

0
投票

如果您已经有重复数据结构,请使用qazxsw poi。

例:

mapset =
  MapSet.new()
  |> MapSet.put(1)
  |> MapSet.put(2)
  |> MapSet.put(2)
  |> MapSet.put(3)
  |> MapSet.put(3)
  |> MapSet.put(3)

Enum.join(mapset, ",")

结果:

"1,2,3"
© www.soinside.com 2019 - 2024. All rights reserved.