fork download
  1. object Main extends App {
  2. val javaMap = new util.HashMap[Int,Int](){
  3. for (i <- 1 to 20)
  4. put(i,i+1)
  5. }
  6.  
  7. import collection.JavaConverters._
  8. val scalaMap = javaMap.asScala.toMap
  9.  
  10. // check is a scala hashmap
  11. assert(scalaMap.getClass.getSuperclass === classOf[scala.collection.immutable.HashMap[Int,Int]])
  12.  
  13. def slow = {
  14. val start = System.nanoTime()
  15. for (i <- 1 to 1000) {
  16. for (i <- 1 to 20) {
  17. scalaMap(i)
  18. }
  19. }
  20. System.nanoTime() - start
  21. }
  22.  
  23. def fast = {
  24. val start = System.nanoTime()
  25. for (i <- 1 to 1000) {
  26. for (i <- 1 to 20) {
  27. javaMap.get(i)
  28. }
  29. }
  30. System.nanoTime() - start
  31. }
  32.  
  33. val elapses: IndexedSeq[(Long, Long)] = {
  34. (1 to 1000).map({_ => (slow,fast)})
  35. }
  36.  
  37. var elapsedSlow = 0L
  38. var elapsedFast = 0L
  39. for ((eSlow,eFast) <- elapses) {
  40. elapsedSlow += eSlow
  41. elapsedFast += eFast
  42. }
  43.  
  44. assert(elapsedSlow > elapsedFast)
  45.  
  46. val fraction : Double = elapsedFast.toDouble/elapsedSlow
  47. println(s"slower by factor of: $fraction")
  48. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.scala:2: error: type HashMap is not a member of package util
   val javaMap = new util.HashMap[Int,Int](){
                          ^
Main.scala:4: error: not found: value put
      put(i,i+1)
      ^
Main.scala:8: error: value asScala is not a member of AnyRef
    val scalaMap = javaMap.asScala.toMap
                           ^
Main.scala:27: error: value get is not a member of AnyRef
          javaMap.get(i)
                  ^
four errors found
Usage: scalac <options> <source files>
where possible standard options include:
  -Dproperty=value                Pass -Dproperty=value directly to the runtime system.
  -J<flag>                        Pass <flag> directly to the runtime system.
  -P:<plugin>:<opt>               Pass an option to a plugin
  -X                              Print a synopsis of advanced options.
  -bootclasspath <path>           Override location of bootstrap class files.
  -classpath <path>               Specify where to find user class files.
  -d <directory|jar>              destination for generated classfiles.
  -dependencyfile <file>          Set dependency tracking file.
  -deprecation                    Emit warning and location for usages of deprecated APIs.
  -encoding <encoding>            Specify character encoding used by source files.
  -explaintypes                   Explain type errors in more detail.
  -extdirs <path>                 Override location of installed extensions.
  -feature                        Emit warning and location for usages of features that should be imported explicitly.
  -g:<level>                      Set level of generated debugging info. (none,source,line,vars,notailcalls) default:vars
  -help                           Print a synopsis of standard options
  -javabootclasspath <path>       Override java boot classpath.
  -javaextdirs <path>             Override java extdirs classpath.
  -language:<_,feature,-feature>  Enable or disable language features: `_' for all, `-language:help' to list
  -no-specialization              Ignore @specialize annotations.
  -nobootcp                       Do not use the boot classpath for the scala jars.
  -nowarn                         Generate no warnings.
  -optimise                       Generates faster bytecode by applying optimisations to the program
  -print                          Print program with Scala-specific features removed.
  -sourcepath <path>              Specify location(s) of source files.
  -target:<target>                Target platform for object files. All JVM 1.5 targets are deprecated. (jvm-1.5,jvm-1.6,jvm-1.7,jvm-1.8) default:jvm-1.6
  -toolcp <path>                  Add to the runner classpath.
  -unchecked                      Enable additional warnings where generated code depends on assumptions.
  -uniqid                         Uniquely tag all identifiers in debugging output.
  -usejavacp                      Utilize the java.class.path in classpath resolution.
  -usemanifestcp                  Utilize the manifest in classpath resolution.
  -verbose                        Output messages about what the compiler is doing.
  -version                        Print product version and exit.
  @<file>                         A text file containing compiler arguments (options and source files)

spoj: The program compiled successfully, but Main.class was not found.
      Class Main should contain method: def main(args: Array[String]).
stdout
Standard output is empty