English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scala Set (مجموعة) هي مجموعة من الأجرام بدون تكرار، وكل العناصر متفردة.
تُقسّم مجموعات Scala إلى مجموعات غير محددة ومحددة.
بشكل افتراضي، يستخدم Scala مجموعة غير محددة، إذا كنت ترغب في استخدام مجموعة غير محددة،则需要 الاستيراد scala.collection.mutable.Set الحزمة.
بالتأكيد، يستخدم Scala مجموعة غير محددة بشكل افتراضي، إذا كنت ترغب في استخدام مجموعة غير محددة،则需要 الاستيراد
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和不可变Set都有添加或删除元素的操作,但是有一个非常大的差别。对不可变Set进行操作,会产生一个新的set,原来的set并没有改变,这与List一样。 而对可变Set进行操作,改变的是该Set本身,与ListBuffer类似。
Scala集合有三个基本操作:
head 返回集合第一个元素
tail 返回一个集合,包含除了第一元素之外的其他元素
isEmpty 在集合为空时返回true
对于Scala集合的任何操作都可以使用这三个基本操作来表达。示例如下:
object Test { def main(args: Array[String]) { val site = Set(“w3codebox”, “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 第一网站是 : w3codebox 最后一个网站是 : Set(Google, Baidu) 查看列表 site 是否为空 : false 查看 nums 是否为空 : true
يمكنك استخدام ++ 运算符或 Set.++() 方法来连接两个集合。如果元素有重复的就会移除重复的元素。示例如下:
object Test { def main(args: Array[String]) { val site1 = Set(“w3codebox”, “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, w3codebox) site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, w3codebox)
يمكنك استخدام Set.min طريقة البحث عن أصغر عنصر في المجموعة، باستخدام Set.max طريقة البحث عن أكبر عنصر في المجموعة. مثال أدناه:
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.& طريقة أو Set.intersect طريقة لعرض عناصر التقاء مجموعتين. مثال أدناه:
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:
الترقيم | الأساليب والوصف |
---|---|
1 | def +(elem: A): Set[A] إضافة عنصر جديد إلى المجموعة وإنشاء مجموعة جديدة، إلا إذا كان العنصر موجودًا بالفعل |
2 | def -(elem: A): Set[A] إزالة العنصر من المجموعة وإنشاء مجموعة جديدة |
3 | def contains(elem: A): Boolean إذا كان العنصر موجودًا في المجموعة، يتم العودة إلى true، وإلا يتم العودة إلى false. |
4 | def &(that: Set[A]): Set[A] العودة إلى الت交汇 بين مجموعتين |
5 | def &~(that: Set[A]): Set[A] العودة إلى الفرق بين مجموعتين |
6 | def +(elem1: A, elem2: A, elems: A*): Set[A] إنشاء مجموعة جديدة غير قابلة للتغيير من خلال إضافة العناصر المحددة إلى المجموعة المقدمة |
7 | def ++(elems: A): Set[A] دمج مجموعتين |
8 | def -(elem1: A, elem2: A, elems: A*): Set[A] إنشاء مجموعة جديدة غير قابلة للتغيير من خلال إزالة العناصر المحددة من المجموعة المقدمة |
9 | def addString(b: StringBuilder): StringBuilder إضافة جميع العناصر في مجموعة غير قابلة للتغيير إلى منطقية النص |
10 | def addString(b: StringBuilder, sep: String): StringBuilder إضافة جميع العناصر في مجموعة غير قابلة للتغيير إلى منطقية النص باستخدام الفاصل المحدد |
11 | def apply(elem: A) تحديد ما إذا كانت المجموعة تحتوي على العنصر المحدد |
12 | def count(p: (A) => Boolean): Int حساب عدد العناصر في المجموعة التي ت satisfy الشروط المحددة |
13 | def copyToArray(xs: Array[A], start: Int, len: Int): Unit نسخ عناصر مجموعة غير قابلة للتغيير إلى مصفوفة |
14 | def diff(that: Set[A]): Set[A] مقارنة مجموعتين للحصول على الفرق بينهما |
15 | def drop(n: Int): Set[A]] العودة إلى مجموعة جديدة تحتوي على العناصر التي تم إسقاطها قبل n عنصرًا |
16 | def dropRight(n: Int): Set[A] يعود مجموعة جديدة بعد إزالة آخر n عناصر |
17 | def dropWhile(p: (A) => Boolean): Set[A] إزالة العناصر من اليسار إلى اليمين حتى لا تنطبق الشروط p |
18 | def equals(that: Any): Boolean يمكن استخدام طريقة equals لكل سلسلة. تستخدم للتحقق من أن السلسلة متطابقة. |
19 | def exists(p: (A) => Boolean): Boolean تحديد ما إذا كان العنصر الذي يلبي الشروط المحددة موجودًا في المجموعة الثابتة |
20 | def filter(p: (A) => Boolean): Set[A] إخراج جميع العناصر في المجموعة الثابتة التي تلبي الشروط المحددة |
21 | def find(p: (A) => Boolean): Option[A] البحث عن العنصر الأول الذي يلبي الشروط المحددة في المجموعة الثابتة |
22 | def forall(p: (A) => Boolean): Boolean البحث عن ما إذا كانت الشروط المحددة تنطبق على جميع العناصر في المجموعة |
23 | def foreach(f: (A) => Unit): Unit تطبيق الدالة على جميع عناصر المجموعة الثابتة |
24 | def head: A الحصول على العنصر الأول في المجموعة الثابتة |
25 | def init: Set[A] يعود جميع العناصر باستثناء الأخيرة |
26 | def intersect(that: Set[A]): Set[A] حساب مصفوفة مجموعتين |
27 | def isEmpty: Boolean تحديد ما إذا كانت المجموعة فارغة |
28 | def iterator: Iterator[A] إنشاء متكرر جديد لاستبدال العناصر |
29 | def last: A يعود العنصر الأخير |
30 | def map[B](f: (A) => B): immutable.Set[B] إعادة حساب جميع العناصر باستخدام الطريقة المقدمة |
31 | def max: A البحث عن الأكبر |
32 | def min: A البحث عن الأصغر |
33 | def mkString: String تظهر جميع عناصر المجموعة ك |
34 | def mkString(sep: String): String استخدام حرف الفاصلة لتظهر جميع عناصر المجموعة ك |
35 | def product: A يعود المنتج إلى جمع عناصر الأعداد في المجموعة الثابتة. |
36 | def size: Int يعود بالنسبة لعدد عناصر المجموعة غير المتغيرة |
37 | def splitAt(n: Int): (Set[A], Set[A]) قسمة المجموعة غير المتغيرة إلى عناصرين، الأول يتكون من n العناصر الأولى، والثاني يتكون من العناصر المتبقية |
38 | def subsetOf(that: Set[A]): Boolean إذا كانت المجموعة تحتوي على مجموعة فرعية، يعود true، وإلا يعود false |
39 | def sum: A يعود بالنسبة لعدد النقاط من جميع العناصر الرقمية في المجموعة غير المتغيرة |
40 | def tail: Set[A] يعود بالنسبة لكل عنصر في المجموعة غير المتغيرة باستثناء العنصر الأول |
41 | def take(n: Int): Set[A] يعود بالنسبة لعدد n العناصر الأولى |
42 | def takeRight(n: Int):Set[A] يعود بالنسبة لعدد n العناصر الأخيرة |
43 | def toArray: Array[A] تحويل المجموعة إلى مصفوفة |
44 | def toBuffer[B >: A]: Buffer[B] يعود بنسخة من Buffer، تحتوي على جميع عناصر المجموعة غير المتغيرة |
45 | def toList: List[A] يعود بنسخة من List، تحتوي على جميع عناصر المجموعة غير المتغيرة |
46 | def toMap[T, U]: Map[T, U] يعود بنسخة من Map، تحتوي على جميع عناصر المجموعة غير المتغيرة |
47 | def toSeq: Seq[A] يعود بنسخة من Seq، تحتوي على جميع عناصر المجموعة غير المتغيرة |
48 | def toString(): String يعود بنسخة من النص، ممثلة كعنصر |
يمكنك الإطلاع على المزيد من الطرق مستندات API