scala第十三讲:Set 野性酷女 2022-06-03 10:05 218阅读 0赞 scala的集合大家园中,有一位成员表示着没有重复的对象集合,就是我们今天要说的set类型,同时也是不可变集合 特点: 1)集合中没有重复对象 2)不可变(默认是引用scala.collection.immutable.Set,如果需要可变的,则引用scala.collection.mutable.Set) 一:集合的定义 1)定义一个不可变的set集合 2)打印名字 3)判断集合中是否存在一个2的倍数的数据项 4)从头部弹出一个数据 5)打印集合(发现并没有变化) 6)集合填加一个元素,发现报错了,因为集合不可变 ![20171226080056789][] 可变set的操作 1)引入可变集合包 2)定义一个可变的set集合 3)打印类型 4)集合填加一个新的数据项 5)打印一下看结果 6)删除一个数据项 7)打印看结果 8)集合加个元素 9)集合减个元素 10)把值赋给一个新的集合 11)获取新集合的类型(我们发现新集合居然是不可变的) ![20171226080124034][] 二:集合的操作 1)和上一讲一样,我们依然是head、tail、isEmpty,其中head 返回集合第一个元素,tail 返回一个集合,包含除了第一元素之外的其他元素,isEmpty 在集合为空时返回true ![20171226081750169][] 2:连接集合 ![20171226082115850][] 3:查找最值 ![20171226082336406][] 4:多个set取交集 ![20171226082647570][] 5:常用方法 <table> <tbody> <tr> <th style="width:5%">序号</th> <th style="width:95%">方法及描述</th> </tr> <tr> <td>1</td> <td> <p><strong>def +(elem: A): Set[A]</strong></p> <p>为集合添加新元素,x并创建一个新的集合,除非元素已存在</p> </td> </tr> <tr> <td>2</td> <td> <p><strong>def -(elem: A): Set[A]</strong></p> <p>移除集合中的元素,并创建一个新的集合</p> </td> </tr> <tr> <td>3</td> <td> <p><strong>def contains(elem: A): Boolean</strong></p> <p>如果元素在集合中存在,返回 true,否则返回 false。</p> </td> </tr> <tr> <td>4</td> <td> <p><strong>def &(that: Set[A]): Set[A]</strong></p> <p>返回两个集合的交集</p> </td> </tr> <tr> <td>5</td> <td> <p><strong>def &~(that: Set[A]): Set[A]</strong></p> <p>返回两个集合的差集</p> </td> </tr> <tr> <td>6</td> <td> <p><strong>def +(elem1: A, elem2: A, elems: A*): Set[A]</strong></p> <p>通过添加传入指定集合的元素创建一个新的不可变集合</p> </td> </tr> <tr> <td>7</td> <td> <p><strong>def ++(elems: A): Set[A]</strong></p> <p>合并两个集合</p> </td> </tr> <tr> <td>8</td> <td> <p><strong>def -(elem1: A, elem2: A, elems: A*): Set[A]</strong></p> <p>通过移除传入指定集合的元素创建一个新的不可变集合</p> </td> </tr> <tr> <td>9</td> <td> <p><strong>def addString(b: StringBuilder): StringBuilder</strong></p> <p>将不可变集合的所有元素添加到字符串缓冲区</p> </td> </tr> <tr> <td>10</td> <td> <p><strong>def addString(b: StringBuilder, sep: String): StringBuilder</strong></p> <p>将不可变集合的所有元素添加到字符串缓冲区,并使用指定的分隔符</p> </td> </tr> <tr> <td>11</td> <td> <p><strong>def apply(elem: A)</strong></p> <p>检测集合中是否包含指定元素</p> </td> </tr> <tr> <td>12</td> <td> <p><strong>def count(p: (A) => Boolean): Int</strong></p> <p>计算满足指定条件的集合元素个数</p> </td> </tr> <tr> <td>13</td> <td> <p><strong>def copyToArray(xs: Array[A], start: Int, len: Int): Unit</strong></p> <p>复制不可变集合元素到数组</p> </td> </tr> <tr> <td>14</td> <td> <p><strong>def diff(that: Set[A]): Set[A]</strong></p> <p>比较两个集合的差集</p> </td> </tr> <tr> <td>15</td> <td> <p><strong>def drop(n: Int): Set[A]]</strong></p> <p>返回丢弃前n个元素新集合</p> </td> </tr> <tr> <td>16</td> <td> <p><strong>def dropRight(n: Int): Set[A]</strong></p> <p>返回丢弃最后n个元素新集合</p> </td> </tr> <tr> <td>17</td> <td> <p><strong>def dropWhile(p: (A) => Boolean): Set[A]</strong></p> <p>从左向右丢弃元素,直到条件p不成立</p> <p></p> </td> </tr> <tr> <td>18</td> <td> <p><strong>def equals(that: Any): Boolean</strong></p> <p>equals 方法可用于任意序列。用于比较系列是否相等。</p> </td> </tr> <tr> <td>19</td> <td> <p><strong>def exists(p: (A) => Boolean): Boolean</strong></p> <p>判断不可变集合中指定条件的元素是否存在。</p> </td> </tr> <tr> <td>20</td> <td> <p><strong>def filter(p: (A) => Boolean): Set[A]</strong></p> <p>输出符合指定条件的所有不可变集合元素。</p> </td> </tr> <tr> <td>21</td> <td> <p><strong>def find(p: (A) => Boolean): Option[A]</strong></p> <p>查找不可变集合中满足指定条件的第一个元素</p> </td> </tr> <tr> <td>22</td> <td> <p><strong>def forall(p: (A) => Boolean): Boolean</strong></p> <p>查找不可变集合中满足指定条件的所有元素</p> </td> </tr> <tr> <td>23</td> <td> <p><strong>def foreach(f: (A) => Unit): Unit</strong></p> <p>将函数应用到不可变集合的所有元素</p> </td> </tr> <tr> <td>24</td> <td> <p><strong>def head: A</strong></p> <p>获取不可变集合的第一个元素</p> </td> </tr> <tr> <td>25</td> <td> <p><strong>def init: Set[A]</strong></p> <p>返回所有元素,除了最后一个</p> </td> </tr> <tr> <td>26</td> <td> <p><strong>def intersect(that: Set[A]): Set[A]</strong></p> <p>计算两个集合的交集</p> </td> </tr> <tr> <td>27</td> <td> <p><strong>def isEmpty: Boolean</strong></p> <p>判断集合是否为空</p> </td> </tr> <tr> <td>28</td> <td> <p><strong>def iterator: Iterator[A]</strong></p> <p>创建一个新的迭代器来迭代元素</p> </td> </tr> <tr> <td>29</td> <td> <p><strong>def last: A</strong></p> <p>返回最后一个元素</p> </td> </tr> <tr> <td>30</td> <td> <p><strong>def map[B](f: (A) => B): immutable.Set[B]</strong></p> <p>通过给定的方法将所有元素重新计算</p> </td> </tr> <tr> <td>31</td> <td> <p><strong>def max: A</strong></p> <p>查找最大元素</p> </td> </tr> <tr> <td>32</td> <td> <p><strong>def min: A</strong></p> <p>查找最小元素</p> </td> </tr> <tr> <td>33</td> <td> <p><strong>def mkString: String</strong></p> <p>集合所有元素作为字符串显示</p> </td> </tr> <tr> <td>34</td> <td> <p><strong>def mkString(sep: String): String</strong></p> <p>使用分隔符将集合所有元素作为字符串显示</p> </td> </tr> <tr> <td>35</td> <td> <p><strong>def product: A</strong></p> <p>返回不可变集合中数字元素的积。</p> </td> </tr> <tr> <td>36</td> <td> <p><strong>def size: Int</strong></p> <p>返回不可变集合元素的数量</p> </td> </tr> <tr> <td>37</td> <td> <p><strong>def splitAt(n: Int): (Set[A], Set[A])</strong></p> <p>把不可变集合拆分为两个容器,第一个由前 n 个元素组成,第二个由剩下的元素组成</p> </td> </tr> <tr> <td>38</td> <td> <p><strong>def subsetOf(that: Set[A]): Boolean</strong></p> <p>如果集合中含有子集返回 true,否则返回false</p> </td> </tr> <tr> <td>39</td> <td> <p><strong>def sum: A</strong></p> <p>返回不可变集合中所有数字元素之和</p> </td> </tr> <tr> <td>40</td> <td> <p><strong>def tail: Set[A]</strong></p> <p>返回一个不可变集合中除了第一元素之外的其他元素</p> </td> </tr> <tr> <td>41</td> <td> <p><strong>def take(n: Int): Set[A]</strong></p> <p>返回前 n 个元素</p> </td> </tr> <tr> <td>42</td> <td> <p><strong>def takeRight(n: Int):Set[A]</strong></p> <p>返回后 n 个元素</p> </td> </tr> <tr> <td>43</td> <td> <p><strong>def toArray: Array[A]</strong></p> <p>将集合转换为数字</p> </td> </tr> <tr> <td>44</td> <td> <p><strong>def toBuffer[B >: A]: Buffer[B]</strong></p> <p>返回缓冲区,包含了不可变集合的所有元素</p> </td> </tr> <tr> <td>45</td> <td> <p><strong>def toList: List[A]</strong></p> <p>返回 List,包含了不可变集合的所有元素</p> </td> </tr> <tr> <td>46</td> <td> <p><strong>def toMap[T, U]: Map[T, U]</strong></p> <p>返回 Map,包含了不可变集合的所有元素</p> </td> </tr> <tr> <td>47</td> <td> <p><strong>def toSeq: Seq[A]</strong></p> <p>返回 Seq,包含了不可变集合的所有元素</p> </td> </tr> <tr> <td>48</td> <td> <p><strong>def toString(): String</strong></p> <p>返回一个字符串,以对象来表示</p> </td> </tr> </tbody> </table> [20171226080056789]: /images/20220603/6095fccd0680411d9772fc0f1bc5df80.png [20171226080124034]: /images/20220603/c3de78e35e094771a5a3215e2e01ed2b.png [20171226081750169]: /images/20220603/5fea7ba94d334208bdc4dd6fcfc7cdaa.png [20171226082115850]: /images/20220603/9379c66d673f482ebae8ff37c5b4d910.png [20171226082336406]: /images/20220603/846d96027d034d1f8c074e43c27617cd.png [20171226082647570]: /images/20220603/7e03078e9255400aaec3ef5d7f226af3.png
还没有评论,来说两句吧...