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