Erlang列表去除重复元素

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38278878/article/details/85223020
-module(unique).
-export([unique_1/1, unique_2/1]).
  

%% @doc 通过遍历去重
-spec unique_1(List) -> Return when
  List        :: list(),
  Return      :: list().
unique_1(List) ->
  unique_1(List, []).

unique_1([], ResultList) -> ResultList;
unique_1([H|L], ResultList) ->
  case lists:member(H, ResultList) of
    true -> unique_1(L, ResultList);
    false -> unique_1(L, [H|ResultList])
  end.


%% @doc 利用set结构去重
-spec unique_2(List) -> Return when
  List        :: list(),
  Return      :: list().
unique_2(List) ->
  Set = sets:from_list(List),
  sets:to_list(Set).

前者的效率和性能要高于后者。

猜你喜欢

转载自blog.csdn.net/weixin_38278878/article/details/85223020
今日推荐