scala Collection Konvertierungen

Das folgende Beispiel zeigt, wie man die Java Collection in Scala Collection umwandelt.

Sehr Praktisch hierfür sind die impliziten Konvertierungen. Aber vorsichtig damit, das kann auch ins Auge gehen.

Convert.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
package de.blauerfalke.convert

object Convert {
	def IteratorToListBuffer[A](in:{def iterator:java.util.Iterator[A]}):scala.collection.mutable.ListBuffer[A] = {
		var out = scala.collection.mutable.ListBuffer[A]()
		val itr = in.iterator
		while(itr.hasNext)
			out + itr.next
		
		out
	}
	
	def EntrySetToLinkedHashMap[K,V](in:{def entrySet:java.util.Set[java.util.Map.Entry[K,V]]}):scala.collection.mutable.LinkedHashMap[K,V] = {
		var out = scala.collection.mutable.LinkedHashMap[K,V]()
		val etr = in.entrySet
		val itr = etr.iterator
		while(itr.hasNext()) {
			val e = itr.next
			out += e.getKey -> e.getValue
		}
		out
	}
	
	implicit def ListToList[A](in:java.util.List[A]):List[A] = IteratorToListBuffer(in.asInstanceOf[AnyRef{def iterator:java.util.Iterator[A]}]).toList
	implicit def SetToList[A](in:java.util.Set[A]):List[A] = IteratorToListBuffer(in.asInstanceOf[AnyRef{def iterator:java.util.Iterator[A]}]).toList
	implicit def SetToSet[A](in:java.util.Set[A]):Set[A] = IteratorToListBuffer(in.asInstanceOf[AnyRef{def iterator:java.util.Iterator[A]}]).toSet
	implicit def ListToSet[A](in:java.util.List[A]):Set[A] = IteratorToListBuffer(in.asInstanceOf[AnyRef{def iterator:java.util.Iterator[A]}]).toSet
	
	implicit def MapToMap[K,V](in:java.util.Map[K,V]):Map[K,V] = EntrySetToLinkedHashMap(in.asInstanceOf[AnyRef{def entrySet:java.util.Set[java.util.Map.Entry[K,V]]}]).toMap
	
	
	
	
	def main(args:Array[String]) {
		/* 	Java Collection

			List (<=> Seq)
			==============
				Stack  (since 1.0)
				Vector (since 1.0)
				LinkedList
				ArrayList
			
			Set ( <=> Set)
			==============
				HashSet
				TreeSet
			
			Map ( <=> Map)
			==============
				Hashtable (since 1.0)
				Properties (since 1.0)
			  	HashMap
				TreeMap
			
		*/
		
		val linkedList = new java.util.ArrayList[String]
		linkedList.add("Die Kunst ")
		linkedList.add("ist das einzig Ernsthafte auf der Welt. ")
		linkedList.add("Und der Künstler ist der einzige Mensch, ")
		linkedList.add("der nie ernsthaft ist.")
		
		outputList(linkedList, linkedList)
		
		val arrayList = new java.util.ArrayList[String]
		arrayList.add("Der Mensch ")
		arrayList.add("ist vielerlei. ")
		arrayList.add("Aber vernünftig ")
		arrayList.add("ist er nicht.")
		
		outputList(arrayList, arrayList)
		
		val vectorList = new java.util.Vector[Int]
		vectorList.add(1)
		vectorList.add(2)
		vectorList.add(4)
		vectorList.add(8)
		 
		outputList(vectorList, vectorList)
		
		val stack = new java.util.Stack[Double]
		stack.add(1.0)
		stack.add(0.5)
		stack.add(0.25)
		stack.add(0.125)
		 
		outputList(stack, stack)

		val hashSet = new java.util.HashSet[String]
		hashSet.add("a")
		hashSet.add("b")
		hashSet.add("c")
		hashSet.add("d")
		
		outputSet(hashSet, hashSet)
		
		val treeSet = new java.util.TreeSet[String]
		treeSet.add("c")
		treeSet.add("d")
		treeSet.add("a")
		treeSet.add("b")
		
		outputSet(treeSet, treeSet)
		
		val hashMap = new java.util.HashMap[Int,String]
		hashMap.put(1, "So etwas wie moralische oder ")
		hashMap.put(2, "unmoralische Bücher gibt es nicht. ")
		hashMap.put(3, "Bücher sind gut oder ")
		hashMap.put(4, "schlecht geschrieben. Weiter nichts.")
		
		outputMap(hashMap, hashMap)
		
		val treeMap = new java.util.TreeMap[Int,String]
		treeMap.put(3, "Sie ist nur ein Name, ")
		treeMap.put(1, "Die Erfahrung hat keinerlei ")
		treeMap.put(2, "ethischen Wert. ")
		treeMap.put(4, "den die Menschen ihren Irrtümern verleihen.")
		
		outputMap(treeMap, treeMap)
		
		val hashTable = new java.util.Hashtable[Int,String]
		hashTable.put(1, "a")
		hashTable.put(2, "b")
		hashTable.put(3, "c")
		hashTable.put(4, "d")
		
		outputMap(hashTable, hashTable)
		
		val properties = new java.util.Properties
		properties.put("a", "1")
		properties.put("b", "2")
		properties.put("c", "3")
		properties.put("d", "4")
		
		outputMap(properties, properties)
		
		
		

	}
	
	def outputList[A](javaList: java.util.List[A], scalaList: List[A]) {
		val itr = javaList.iterator();
		while(itr.hasNext())
			System.out.print(""+itr.next);
		
		println("")
		
		for(v <- scalaList)
			System.out.print(""+v);
		
		println("")
	}
	
	
	def outputSet[A](javaSet: java.util.Set[A], scalaSet: Set[A]) {
		val itr = javaSet.iterator();
		while(itr.hasNext())
			System.out.print(""+itr.next);
		
		println("")
		
		for(v <- scalaSet)
			System.out.print(""+v);
		
		println("")
	}
	
	def outputMap[A,B](javaMap: java.util.Map[A,B], scalaMap: Map[A,B]) {
		val etr = javaMap.entrySet
		val itr = etr.iterator
		while(itr.hasNext())
			System.out.print(""+itr.next.getValue);
		
		println("")
		
		for((k, v) <- scalaMap)
			System.out.print(""+v);
		
		println("")
	}
}

output:

Die Kunst ist das einzig Ernsthafte auf der Welt. Und der Künstler ist der einzige Mensch, der nie ernsthaft ist.
Die Kunst ist das einzig Ernsthafte auf der Welt. Und der Künstler ist der einzige Mensch, der nie ernsthaft ist.
Der Mensch ist vielerlei. Aber vernünftig ist er nicht.
Der Mensch ist vielerlei. Aber vernünftig ist er nicht.
1248
1248
1.00.50.250.125
1.00.50.250.125
dbca
dbca
abcd
abcd
So etwas wie moralische oder unmoralische Bücher gibt es nicht. Bücher sind gut oder schlecht geschrieben. Weiter nichts.
So etwas wie moralische oder unmoralische Bücher gibt es nicht. Bücher sind gut oder schlecht geschrieben. Weiter nichts.
Die Erfahrung hat keinerlei ethischen Wert. Sie ist nur ein Name, den die Menschen ihren Irrtümern verleihen.
Die Erfahrung hat keinerlei ethischen Wert. Sie ist nur ein Name, den die Menschen ihren Irrtümern verleihen.
dcba
dcba
2143
2143


Urheber: Zitate von Oscar Wilde