@@ -8,9 +8,9 @@ import scala.collection.mutable.{Builder, ImmutableBuilder}
8
8
9
9
/**
10
10
* A generic trait for ordered immutable maps. Concrete classes have to provide
11
- * functionality for the abstract methods in `LinkedMap `.
11
+ * functionality for the abstract methods in `SeqMap `.
12
12
*
13
- * Note that when checking for equality [[LinkedMap ]] does not take into account
13
+ * Note that when checking for equality [[SeqMap ]] does not take into account
14
14
* ordering.
15
15
*
16
16
* @tparam K the type of the keys contained in this linked map.
@@ -20,39 +20,39 @@ import scala.collection.mutable.{Builder, ImmutableBuilder}
20
20
* @version 2.13
21
21
* @since 2.13
22
22
* @define coll immutable linked map
23
- * @define Coll `immutable.LinkedMap `
23
+ * @define Coll `immutable.SeqMap `
24
24
*/
25
25
26
- trait LinkedMap [K , + V ]
26
+ trait SeqMap [K , + V ]
27
27
extends AbstractMap [K , V ]
28
- with MapOps [K , V , LinkedMap , LinkedMap [K , V ]]
28
+ with MapOps [K , V , SeqMap , SeqMap [K , V ]]
29
29
30
- object LinkedMap extends MapFactory [LinkedMap ] {
31
- def empty [K , V ]: LinkedMap [K , V ] = EmptyLinkedMap .asInstanceOf [LinkedMap [K , V ]]
30
+ object SeqMap extends MapFactory [SeqMap ] {
31
+ def empty [K , V ]: SeqMap [K , V ] = EmptyLinkedMap .asInstanceOf [SeqMap [K , V ]]
32
32
33
- def from [K , V ](it : collection.IterableOnce [(K , V )]): LinkedMap [K , V ] =
33
+ def from [K , V ](it : collection.IterableOnce [(K , V )]): SeqMap [K , V ] =
34
34
it match {
35
- case vm : LinkedMap [K , V ] => vm
35
+ case sm : SeqMap [K , V ] => sm
36
36
case _ => (newBuilder[K , V ] ++= it).result()
37
37
}
38
38
39
- def newBuilder [K , V ]: Builder [(K , V ), LinkedMap [K , V ]] = VectorMap .newBuilder
39
+ def newBuilder [K , V ]: Builder [(K , V ), SeqMap [K , V ]] = VectorMap .newBuilder
40
40
41
41
@ SerialVersionUID (3L )
42
- private object EmptyLinkedMap extends LinkedMap [Any , Nothing ] {
42
+ private object EmptyLinkedMap extends SeqMap [Any , Nothing ] {
43
43
override def size : Int = 0
44
44
override def knownSize : Int = 0
45
45
override def apply (key : Any ) = throw new NoSuchElementException (" key not found: " + key)
46
46
override def contains (key : Any ) = false
47
47
def get (key : Any ): Option [Nothing ] = None
48
48
override def getOrElse [V1 ](key : Any , default : => V1 ): V1 = default
49
49
def iterator : Iterator [(Any , Nothing )] = Iterator .empty
50
- def updated [V1 ] (key : Any , value : V1 ): LinkedMap [Any , V1 ] = new LinkedMap1 (key, value)
51
- def remove (key : Any ): LinkedMap [Any , Nothing ] = this
50
+ def updated [V1 ] (key : Any , value : V1 ): SeqMap [Any , V1 ] = new SeqMap1 (key, value)
51
+ def remove (key : Any ): SeqMap [Any , Nothing ] = this
52
52
}
53
53
54
54
@ SerialVersionUID (3L )
55
- final class LinkedMap1 [K , + V ](key1 : K , value1 : V ) extends LinkedMap [K ,V ] with Serializable {
55
+ final class SeqMap1 [K , + V ](key1 : K , value1 : V ) extends SeqMap [K ,V ] with Serializable {
56
56
override def size : Int = 1
57
57
override def knownSize : Int = 1
58
58
override def apply (key : K ) = if (key == key1) value1 else throw new NoSuchElementException (" key not found: " + key)
@@ -62,18 +62,18 @@ object LinkedMap extends MapFactory[LinkedMap] {
62
62
override def getOrElse [V1 >: V ](key : K , default : => V1 ): V1 =
63
63
if (key == key1) value1 else default
64
64
def iterator = Iterator .single((key1, value1))
65
- def updated [V1 >: V ](key : K , value : V1 ): LinkedMap [K , V1 ] =
66
- if (key == key1) new LinkedMap1 (key1, value)
67
- else new LinkedMap2 (key1, value1, key, value)
68
- def remove (key : K ): LinkedMap [K , V ] =
69
- if (key == key1) LinkedMap .empty else this
65
+ def updated [V1 >: V ](key : K , value : V1 ): SeqMap [K , V1 ] =
66
+ if (key == key1) new SeqMap1 (key1, value)
67
+ else new SeqMap2 (key1, value1, key, value)
68
+ def remove (key : K ): SeqMap [K , V ] =
69
+ if (key == key1) SeqMap .empty else this
70
70
override def foreach [U ](f : ((K , V )) => U ): Unit = {
71
71
f((key1, value1))
72
72
}
73
73
}
74
74
75
75
@ SerialVersionUID (3L )
76
- final class LinkedMap2 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V ) extends LinkedMap [K ,V ] with Serializable {
76
+ final class SeqMap2 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V ) extends SeqMap [K ,V ] with Serializable {
77
77
override def size : Int = 2
78
78
override def knownSize : Int = 2
79
79
override def apply (key : K ) =
@@ -90,21 +90,21 @@ object LinkedMap extends MapFactory[LinkedMap] {
90
90
else if (key == key2) value2
91
91
else default
92
92
def iterator = ((key1, value1) :: (key2, value2) :: Nil ).iterator
93
- def updated [V1 >: V ](key : K , value : V1 ): LinkedMap [K , V1 ] =
94
- if (key == key1) new LinkedMap2 (key1, value, key2, value2)
95
- else if (key == key2) new LinkedMap2 (key1, value1, key2, value)
96
- else new LinkedMap3 (key1, value1, key2, value2, key, value)
97
- def remove (key : K ): LinkedMap [K , V ] =
98
- if (key == key1) new LinkedMap1 (key2, value2)
99
- else if (key == key2) new LinkedMap1 (key1, value1)
93
+ def updated [V1 >: V ](key : K , value : V1 ): SeqMap [K , V1 ] =
94
+ if (key == key1) new SeqMap2 (key1, value, key2, value2)
95
+ else if (key == key2) new SeqMap2 (key1, value1, key2, value)
96
+ else new SeqMap3 (key1, value1, key2, value2, key, value)
97
+ def remove (key : K ): SeqMap [K , V ] =
98
+ if (key == key1) new SeqMap1 (key2, value2)
99
+ else if (key == key2) new SeqMap1 (key1, value1)
100
100
else this
101
101
override def foreach [U ](f : ((K , V )) => U ): Unit = {
102
102
f((key1, value1)); f((key2, value2))
103
103
}
104
104
}
105
105
106
106
@ SerialVersionUID (3L )
107
- class LinkedMap3 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V ) extends LinkedMap [K ,V ] with Serializable {
107
+ class SeqMap3 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V ) extends SeqMap [K ,V ] with Serializable {
108
108
override def size : Int = 3
109
109
override def knownSize : Int = 3
110
110
override def apply (key : K ) =
@@ -124,23 +124,23 @@ object LinkedMap extends MapFactory[LinkedMap] {
124
124
else if (key == key3) value3
125
125
else default
126
126
def iterator = ((key1, value1) :: (key2, value2) :: (key3, value3) :: Nil ).iterator
127
- def updated [V1 >: V ](key : K , value : V1 ): LinkedMap [K , V1 ] =
128
- if (key == key1) new LinkedMap3 (key1, value, key2, value2, key3, value3)
129
- else if (key == key2) new LinkedMap3 (key1, value1, key2, value, key3, value3)
130
- else if (key == key3) new LinkedMap3 (key1, value1, key2, value2, key3, value)
131
- else new LinkedMap4 (key1, value1, key2, value2, key3, value3, key, value)
132
- def remove (key : K ): LinkedMap [K , V ] =
133
- if (key == key1) new LinkedMap2 (key2, value2, key3, value3)
134
- else if (key == key2) new LinkedMap2 (key1, value1, key3, value3)
135
- else if (key == key3) new LinkedMap2 (key1, value1, key2, value2)
127
+ def updated [V1 >: V ](key : K , value : V1 ): SeqMap [K , V1 ] =
128
+ if (key == key1) new SeqMap3 (key1, value, key2, value2, key3, value3)
129
+ else if (key == key2) new SeqMap3 (key1, value1, key2, value, key3, value3)
130
+ else if (key == key3) new SeqMap3 (key1, value1, key2, value2, key3, value)
131
+ else new SeqMap4 (key1, value1, key2, value2, key3, value3, key, value)
132
+ def remove (key : K ): SeqMap [K , V ] =
133
+ if (key == key1) new SeqMap2 (key2, value2, key3, value3)
134
+ else if (key == key2) new SeqMap2 (key1, value1, key3, value3)
135
+ else if (key == key3) new SeqMap2 (key1, value1, key2, value2)
136
136
else this
137
137
override def foreach [U ](f : ((K , V )) => U ): Unit = {
138
138
f((key1, value1)); f((key2, value2)); f((key3, value3))
139
139
}
140
140
}
141
141
142
142
@ SerialVersionUID (3L )
143
- final class LinkedMap4 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V , key4 : K , value4 : V ) extends LinkedMap [K ,V ] with Serializable {
143
+ final class SeqMap4 [K , + V ](key1 : K , value1 : V , key2 : K , value2 : V , key3 : K , value3 : V , key4 : K , value4 : V ) extends SeqMap [K ,V ] with Serializable {
144
144
override def size : Int = 4
145
145
override def knownSize : Int = 4
146
146
override def apply (key : K ) =
@@ -163,11 +163,11 @@ object LinkedMap extends MapFactory[LinkedMap] {
163
163
else if (key == key4) value4
164
164
else default
165
165
def iterator = ((key1, value1) :: (key2, value2) :: (key3, value3) :: (key4, value4) :: Nil ).iterator
166
- def updated [V1 >: V ](key : K , value : V1 ): LinkedMap [K , V1 ] =
167
- if (key == key1) new LinkedMap4 (key1, value, key2, value2, key3, value3, key4, value4)
168
- else if (key == key2) new LinkedMap4 (key1, value1, key2, value, key3, value3, key4, value4)
169
- else if (key == key3) new LinkedMap4 (key1, value1, key2, value2, key3, value, key4, value4)
170
- else if (key == key4) new LinkedMap4 (key1, value1, key2, value2, key3, value3, key4, value)
166
+ def updated [V1 >: V ](key : K , value : V1 ): SeqMap [K , V1 ] =
167
+ if (key == key1) new SeqMap4 (key1, value, key2, value2, key3, value3, key4, value4)
168
+ else if (key == key2) new SeqMap4 (key1, value1, key2, value, key3, value3, key4, value4)
169
+ else if (key == key3) new SeqMap4 (key1, value1, key2, value2, key3, value, key4, value4)
170
+ else if (key == key4) new SeqMap4 (key1, value1, key2, value2, key3, value3, key4, value)
171
171
else {
172
172
// Directly create the elements for performance reasons
173
173
val fields = Vector (key1, key2, key3, key4, key)
@@ -189,11 +189,11 @@ object LinkedMap extends MapFactory[LinkedMap] {
189
189
)
190
190
new VectorMap (fields, underlying)
191
191
}
192
- def remove (key : K ): LinkedMap [K , V ] =
193
- if (key == key1) new LinkedMap3 (key2, value2, key3, value3, key4, value4)
194
- else if (key == key2) new LinkedMap3 (key1, value1, key3, value3, key4, value4)
195
- else if (key == key3) new LinkedMap3 (key1, value1, key2, value2, key4, value4)
196
- else if (key == key4) new LinkedMap3 (key1, value1, key2, value2, key3, value3)
192
+ def remove (key : K ): SeqMap [K , V ] =
193
+ if (key == key1) new SeqMap3 (key2, value2, key3, value3, key4, value4)
194
+ else if (key == key2) new SeqMap3 (key1, value1, key3, value3, key4, value4)
195
+ else if (key == key3) new SeqMap3 (key1, value1, key2, value2, key4, value4)
196
+ else if (key == key4) new SeqMap3 (key1, value1, key2, value2, key3, value3)
197
197
else this
198
198
override def foreach [U ](f : ((K , V )) => U ): Unit = {
199
199
f((key1, value1)); f((key2, value2)); f((key3, value3)); f((key4, value4))
0 commit comments