Curl Global Community
ユニークな値の一覧を取得したい - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: ユニークな値の一覧を取得したい (/showthread.php?tid=953)



ユニークな値の一覧を取得したい - umemura - 08-08-2013

ある配列や、レコードの特定フィールドの値から、
重複しない、ユニークな値のみを取り出す方法について、
何かいい実装方法はありますか?


RE: ユニークな値の一覧を取得したい - umemura - 08-08-2013

if 句を使って判断するほうがコストは低いかもしれませんが、
私は、ハッシュテーブルを使っています。

Code:
{do
    def ary = {{Array-of int} 1,1,2,3,1,5,3}
    def hst = {{HashTable-of int, bool}}
    {for i in ary do  {hst.set i, true} }
    def vb = {VBox "ユニーク化された値の一覧"}
    {for i in {hst.keys-to-Iterator} do  {vb.add i} }
    {popup-message vb}
}



RE: ユニークな値の一覧を取得したい - nmyzk - 08-09-2013

データ量にもよるんですが、最近のPCスペックだとハッシュを多用しても
気にするほど負荷は上がらないかも、と思うことがあります。
もちろん、メモリ負荷をかけない前提でプログラムするのが最善ですが。


ちょっとケースが違うかもしれませんが、そもそもインスタンスを重複させたくない場合は
Flyweightのパターンを利用して実装するのも手だと思います。
http://ja.wikipedia.org/wiki/Flyweight_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3


これの場合、FlyweightFactoryにインスタンスが集約されているうえ、
何処からオブジェクトが重複されないという保証があるので、集団開発では有用です。