Scalaのセット(コレクション)
Scalaのセット(コレクション)はオブジェクトのコレクションを繰り返さない、全ての要素がユニークです。
Scalaのコレクションは、変数と不変コレクションに分割されています。
あなたは、変数セットを使用したい場合、デフォルトでは、Scalaは、不変コレクションを使用して、あなたはscala.collection.mutable.Setパッケージを参照する必要があります。
次のようにデフォルトの参照scala.collection.immutable.Set、例の不変のセットは、次のとおりです。
val set = Set(1,2,3) println(set.getClass.getName) // println(set.exists(_ % 2 == 0)) //true println(set.drop(1)) //Set(2,3)
あなたは、変数のコレクションを使用する必要がある場合scala.collection.mutable.Setを導入する必要があります。
import scala.collection.mutable.Set // 可以在任何地方引入 可变集合 val mutableSet = Set(1,2,3) println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet mutableSet.add(4) mutableSet.remove(1) mutableSet += 5 mutableSet -= 2 println(mutableSet) // Set(5, 3, 4) val another = mutableSet.toSet println(another.getClass.getName) // scala.collection.immutable.Set
変数と不変のセットセットは、要素を追加または削除したが、しかし、非常に大きな違いがあります 。注意してください。 不変なSet操作は、新しいセットが生成されます、元のセットリストと同じである、変更されていません。 変数の設定変更の操作はListBufferに似た設定自体、ということです。
基本的な操作のコレクション
Scalaのコレクションは、3つの基本的な操作があります。
-
head
コレクションの最初の要素を返します。 -
tail
最初の要素の他の要素に加えて、含まれているコレクションを返します。 -
isEmpty
コレクションが空の場合にtrueを返します。
Scalaのコレクションのすべての操作は、3つの基本的な動作を発現するために使用することができます。 例としては、次のとおりです:
object Test { def main(args: Array[String]) { val site = Set("w3big", "Google", "Baidu") val nums: Set[Int] = Set() println( "第一网站是 : " + site.head ) println( "最后一个网站是 : " + site.tail ) println( "查看列表 site 是否为空 : " + site.isEmpty ) println( "查看 nums 是否为空 : " + nums.isEmpty ) } }
上記のコードの実装、出力は次のようになります。
$ vim Test.scala $ scala Test.scala 第一网站是 : w3big 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
接続セット
あなたは++演算子や設定を使用することができます。++()メソッドを2セットを接続します。 重複した要素がある場合は、重複要素を削除します。 例としては、次のとおりです:
object Test { def main(args: Array[String]) { val site1 = Set("w3big", "Google", "Baidu") val site2 = Set("Faceboook", "Taobao") // ++ 作为运算符使用 var site = site1 ++ site2 println( "site1 ++ site2 : " + site ) // ++ 作为方法使用 site = site1.++(site2) println( "site1.++(site2) : " + site ) } }
上記のコードの実装、出力は次のようになります。
$ vim Test.scala $ scala Test.scala site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, w3big) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3big)
コレクション内の最大値と最小値の要素を探します
あなたは、コレクション内の最大の要素を見つけるために、Set.maxの方法を使用して、コレクション内の最小の要素を見つけるために、Set.minメソッドを使用することができます。 例としては、次のとおりです:
object Test { def main(args: Array[String]) { val num = Set(5,6,9,20,30,45) // 查找集合中最大与最小元素 println( "Set(5,6,9,20,30,45) 集合中的最小元素是 : " + num.min ) println( "Set(5,6,9,20,30,45) 集合中的最大元素是 : " + num.max ) } }
上記のコードの実装、出力は次のようになります。
$ vim Test.scala $ scala Test.scala Set(5,6,9,20,30,45) 集合中的最小元素是 : 5 Set(5,6,9,20,30,45) 集合中的最大元素是 : 45
交差点
あなたが設定を使用することができます。&Set.intersect方法または方法の要素の2セットの共通部分を参照してください。 例としては、次のとおりです:
object Test { def main(args: Array[String]) { val num1 = Set(5,6,9,20,30,45) val num2 = Set(50,60,9,20,35,55) // 交集 println( "num1.&(num2) : " + num1.&(num2) ) println( "num1.intersect(num2) : " + num1.intersect(num2) ) } }
上記のコードの実装、出力は次のようになります。
$ vim Test.scala $ scala Test.scala num1.&(num2) : Set(20, 9) num1.intersect(num2) : Set(20, 9)
Scalaの設定一般的な方法
次の表は、Scalaの設定一般的に使用されるメソッドを示します:
いいえ。 | メソッドと説明 |
---|---|
1 | デフ+(elemは:A):セット[A] コレクション、xに新しい要素を追加して、新しいコレクションを作成する既存の要素でない限り |
2 | デフ- (elemは:A):セット[A] コレクションの要素を削除し、新しいコレクションを作成します |
3 | デフは(elemはを:A):含まれていブール 要素がコレクション内に存在する場合、それは、そうでない場合はfalseを返し、trueを返します。 |
4 | デフ&(つまり:セット[A ]):セット[A] 2セットの共通部分を返します。 |
5 | デフ&〜(その:セット[ A]):セット[A] 二組の差集合を返します。 |
6 | デフ+(elem1:A、のElem2 :A、elems:*):セット[A] 指定されたコレクションの着信要素を追加することにより不変の新しいセットを作成します |
7 | デフ++(elems:A):セット[A] 2つのコレクションのマージ |
8 | デフ- (elem1:A、のElem2 :A、elems:*):セット[A] 不変の新しいセットを作成するために、渡された指定されたコレクションの要素を除去することによって |
9 | デフaddString(B:StringBuilderの):のStringBuilder 不変の文字列バッファにコレクションのすべての要素を追加します。 |
10 | デフaddString(B:StringBuilderを、9月 :文字列):StringBuilderの 指定された区切り文字を使用して、文字列バッファに不変なコレクションのすべての要素を追加します。 |
11 | デフ適用されます(elemは:A) コレクションに指定された要素が含まれているかどうかを検出します |
12 | デフ(:(A)は、p数えるのInt:=>ブール値) 設定指定された基準を満たす要素の数を計算します |
13 | デフcopyToArray(XS:配列[A ]、起動します。int、LEN:INT):ユニット 配列に不変なコレクション要素をコピーします |
14 | デフデフ(つまり:セット[A ]):セット[A] 違いは、2セットを比較設定します |
15 | デフドロップ(N:INT):セット[A]] 破棄n個の要素を返す前に新しいコレクション |
16 | デフdropRight(N:INT):セット[A] 戻る新しいコレクションの最後のn個の要素を破棄 |
17 | デフdropWhile(P:(A) =>ブール):セット[A] 条件が満たされ、pがなくなるまで廃棄要素は、左から右へ |
18 | デフ等号(つまり:任意):ブール この方法は、任意の順序で使用することができる等しいです。 一連の比較に等しいです。 |
19 | デフ(:(A)は、pが存在するブール:=>ブール値) 条件指定された要素が存在している不変のセットを分析します。 |
20 | デフ(:(A)は、pフィルタセット[A]:=>ブール値) 出力はすべて指定された基準不変なコレクションの要素を満たしています。 |
21 | (:(A)は、pデフ見つける =>ブール):オプションを[A] 指定された基準は、コレクション不変の大会の最初の要素を見つけます |
22 | デフのforall(P:(A) =>ブール):ブール 指定された基準を満たしている不変なコレクションのすべての要素を探します |
23 | デフforeachの(F:(A) =>ユニット):ユニット 関数は不変コレクションのすべての要素に適用されます |
24 | デフヘッド: 不変コレクションの最初の要素を取得します。 |
25 | デフのinit:セット[A] 最後の1を除いて、すべての要素を返します。 |
26 | デフ交差(つまり:セット[A ]):セット[A] 2セットの共通部分を計算します |
27 | デフのisEmpty:ブール コレクションが空であるかどうかを判別 |
28 | デフイテレータ:イテレータ[A] 要素を反復処理するために、新しいイテレータを作成します。 |
29 | デフ続きます: 最後の要素を返します。 |
30 | DEFマップ[B](F: (A)=> B):immutable.Set [B] 指定されたメソッドを介してすべての要素を再計算します |
31 | デフ最大: 最大の要素を探します |
32 | デフ分:A 最小の要素を探します |
33 | デフmkString:文字列 文字列として表示のすべての要素の集合 |
34 | デフmkString(9月:文字列):文字列 セパレータは文字列として表示されたすべての要素を一緒に持って来ます |
35 | デフ製品: 描画要素内の番号の不変のセットを返します。 |
36 | デフサイズ:のInt 不変コレクション内の要素数を返します。 |
37 | デフsplitAt(N:INT): (セット[A]、セット[A]) 不変なコレクションは、最初のn個の要素による最初の、そして残りの要素によって、第2、二つの容器に分割され、 |
38 | デフsubsetOf(つまり:セット[A ]):ブール コレクションが含まれている場合サブセットはtrue、そうでない場合はfalseを返します |
39 | デフ合計: デジタルのすべての要素の不変のセットを返しますし、 |
40 | デフ尾:セット[A] 最初の要素に加えて、他の要素の不変のセットを返します。 |
41 | デフ取る(N:int)を:セット[A] 最初のn個の要素を返します。 |
42 | デフtakeRight(N:INT):セット[A] 戻るn個の要素 |
43 | デフのtoArray:配列[A] デジタルコレクションに変換されます |
44 | デフtoBuffer [B>:A] :バッファ[B] バックバッファは、不変のコレクションのすべての要素が含まれています |
45 | デフToListメソッド:リスト[A] 戻るリストには、不変のコレクションのすべての要素が含まれています |
46 | デフtoMap [T、U]:マップ[T、U] 戻る地図は、不変のコレクションのすべての要素が含まれています |
47 | デフtoSeq:配列[A] バックのSeq、不変のコレクションのすべての要素が含まれています |
48 | デフのtoString():文字列 表すためにobjectに文字列を返します。 |
参照するより多くの方法APIドキュメント