3

私の英語でごめんなさい:(私の質問を例で説明しましょう。配列がありaます:

    var a = Array(1,1,1,1,2)

私たちはできる:

  1. フィルターa:

    a.filter( _ < 2 )
    
  2. a のいくつかの要素を数える:

    a.count (_ < 2)
    
  3. コレクション内の一意の要素を取得:

    a.filter { i =>
        a.count(_ == i) == 1
    }
    

問題は、変数 i を導入せずに 3 番目の節を実行する方法です。次のようなものを書くことは可能ですか:

    a.filter ( a.count ( _ == __) == 1 )

私はこれを書くことができることを理解しています(そしてそれはまだ短いです):

    a.filter { i => a.count(_ == i) == 1 }

しかし、私はただ答えに興味があります。

4

2 に答える 2

0

代替ソリューションについて言及するだけです(単純ではありませんが、より高速だと思います)

a.groupBy(identity).filter{ case (_, v) => v.size == 1}.keys
于 2013-11-11T23:19:24.757 に答える