scala容器使用

花了两个小时左右,学习了一下scala语言, 由于scala运行在jvm之上, 可以使用java容器也可以使用scala自带的容器.

import java.util
import java.util.{HashMap => JavaHashMap}
import scala.collection.mutable.HashMap
import java.util.{ArrayList => JavaList} // rename

object tewst {

   def testarry(): Unit = {
     print("scala array")
     val buf = new scala.collection.mutable.ArrayBuffer[Int]

     for (i <- 0 to 10) {
       buf += i
     }
     buf += 11

     buf.foreach(u =>print(u + "\t"))

     // 数组
     print("\n java array \n")
     var arry = new Array[String](3);
     arry(0) = "javaarray0";
     arry(1) = "javaarray1";
     arry(2) = "javaarray2";
     for(i <- 0 to 2){
       print(arry(i) + "\t");
     }
   }

   def testlist(): Unit ={
     print("\n scala list \n")
     // 效果一样
     // var buf = new scala.collection.mutable.ListBuffer[Int]
     var buf = scala.collection.mutable.ListBuffer.empty[Int]
     for(i <- 0 to 10)
       buf += i
     buf.foreach(B=>print(B + "\t"))

     print("\n java list \n")
     var javalist = new JavaList[Int]()
     for(i <- 0 to 10){
       javalist.add(i)
     }

     for(i <- 0 to javalist.size() - 1)
       print(javalist.get(i) + "\t")
   }

  def testlistcombine(): Unit ={
    var list1 = List("list1", "list2", "list3");
    list1.foreach(list=>print("合并前: " +  list + "\n"))
    var list2 = List("list11", "list12", "list13");
    list2.foreach(list=>print("合并前: " + list + "\n"))
    var list3 = list1 :::list2
    list3.foreach(list=>print("合并后: " + list + "\n"))
  }

  def testset(): Unit ={
    print("\n scala set \n")
    var set =  scala.collection.mutable.HashSet("set1", "set2")
    set += "set3"
    set.foreach(value=>print(value + "\t"))

    print("\n java set \n")
    var javaset = new util.HashSet[String]()
    for(i <- 0 to 3){
      javaset.add("set" + i.toString())
    }

    var itor = javaset.iterator()
    while(itor.hasNext){
      print(itor.next()  +  " \t")
    }
  }

   def testhashmap(): Unit ={
     print("\n scala hashmap \n")
     var buf = new scala.collection.mutable.HashMap[Int, Int]()
     for (i <- 0 to 10){
       buf += (i -> i)
     }
     buf += (11 -> 11)
     buf.foreach(f=>print("key: " + f._1 + "value :" + f._2 + "\t"))

     print("\n java hashmap \n")
     var javamap  = new JavaHashMap[String, String]()
     for(i <- 0 to 10){
       javamap.put(i.toString, i.toString)
     }
     for(i <- javamap.keySet().toArray()){
       print("key:= " + i  + " value " + javamap.get(i) + "\t")
     }
   }

   def main(args: Array[String]) {
     testarry()
     testlist()
     testset()
     testhashmap()
  }

}

  

时间: 2024-12-20 22:48:41

scala容器使用的相关文章

scala容器对象(转载)

1Array 数组 Scala的数组是这个样子: val arr = new Array[String](3) 程序员们基本都看得懂,new 一个Array对象,它的类型是String,长度为3.对元素赋值的操作如下: arr(0) = "alan" arr(1) = "stef" arr(2) = "boy" 和Java的不大一样,java是用[]来表示数组元素位置,而scala的赋值其实就是一个update方法了,方法当然是用小括号了. 变量

Scala实验任务三

统计学生成绩 学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号.性别.课程名 1.课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开 Id gender Math English Physics 301610 male 80 64 78 301611 female 65 87 58 给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩:另外还需按男女同学分开,分别统计各门课程的平均成绩

Spark 算子实现

1.map,flatmap,filter用的是scala的内部实现. 2.cogroup,intersection,join,leftOuterJoin,rightOuterJoin,fullOuterJoin rdd1:[(1,2,3),(2,3,4)] rdd2:[(1,3,5),(2,4,6)] rdd1.cogroup(rdd2) 对rdd1调用cogroup: rdd1->cogroup(rdd2)->CoGroupRDD(rdd1,rdd2)->mapValues()->

scala学习手记17 - 容器和类型推断

关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var list2 = new ArrayList[Int] list2 add 1 list2 add 2 var total = 0 for (index <- 0 until list2.size()) { total += list2.get(index) } println("Total i

scala学习手记36 - 容器基础

scala的容器包括Set.List和Map.三种容器的特征和Java中一样.scala为每种容器都提供了可变和不可变两种版本,分别位于scala.collection.mutable或scala.collection.immutable包下.scala建议使用尽量使用不可变容器,尤其是在多线程环境下.并且scala默认的容器就是不变的版本. 可变容器没什么好说的,java中的容器就是.来看一个不可变容器的实例: val colors1 = Set("Blue", "Gree

Scala

Scala 一.前言 大数据领域的Spark.Kafka.Summingbird等都是由Scala语言编写而成,相比Java而言,Scala更精炼.由于笔者从事大数据相关的工作,所以有必要好好学习Scala语言,之前也学习过,但是没有记录,所以就会忘记,感觉Scala确实比Java方便精炼很多,下面以Scala Cookbook英文版作为参考资料,从头到尾梳理Scala相关知识点,也加深印象.PS:这是在研究Zookeeper源码的间隙中交叉学习,不至于总是看源码太枯燥. 二.String 在S

scala界面GUI编程实战初步了解

示例代码: import scala.swing._ //SimpleSwingApplication继承自SwingApplication类(此类中有main方法,因此可以运行显示界面) object Hello_GUI extends SimpleSwingApplication { def top = new MainFrame{ //顶级容器 title = "Hello GUI" contents = new Button{ text = "Scala =>

scala学习手记38 - 方法命名约定和for表达式

方法命名约定 之前在学习<运算符重载>一节时曾经说过一个方法命名约定:方法的第一个字符决定了方法的优先级.现在再说另一个命名约定:如果方法以冒号(:)结尾,则调用目标是运算符后面的实例. 比如下面这个例子: class Cow { def ^(moon: Moon) = println("Cow jumped over the moon") } class Moon { def ^:(cow: Cow) = println("This cow jumped ove

Scala中的空

Scala的有即Any,Scala的无是Null,null,Nil,Nothing,None,Unit.那么这几种空有什么区别呢? 一.Null&null 很多人一辈子都没有走出这个无.Null是一个Trait,你不能创建她它的实例.但是Scala在语言层面上存在一个Null的实例,那就是null.Java中的null意味着引用并没有指向任何对象.但存在一个悖论,一切都是对象,那没有对象是不是也是对象呢?Scala定义了一个类似于对象语义的Null,和一个值语义的null.这样面向对象在空引用的