小编oxb*_*kes的帖子

Scala的BigDecimal违反了equals/hashCode合约吗?

根据Ordered trait需求,equalsScala BigDecimal类的方法与排序一致.但是,哈希码只是从包装中获取java.math.BigDecimal,因此与equals不一致.

object DecTest {
  def main(args: Array[String]) {
    val d1 = BigDecimal("2")
    val d2 = BigDecimal("2.00")
    println(d1 == d2) //prints true
    println(d1.hashCode == d2.hashCode) //prints false
  }
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于这是一个已知问题的提法.我错过了什么吗?

scala equals hashcode bigdecimal

3
推荐指数
1
解决办法
919
查看次数

java中的时间同步

在for-loop中,我通过检索和处理车辆信息来控制基于模拟步骤的交通模拟器SUMO.为了确保我的程序"实时"模拟(1个模拟步骤= 1秒),我想在处理阶段之后睡眠我的程序,直到下一个步骤开始.为了获得更好的结果,我正在根据最初采用的参考时间戳计算时间戳.

循环看起来像这样:

    System.out.println("start of traffic simulation ...");

    for (int i = 0; i < stepCount; i++)
    {
        System.out.println("step: " + i);

        // set before timeStamp
        beforeTimeStamp = System.currentTimeMillis();

        if (firstStep)
        {
            // get reference timeStamp
            referenceTimeStamp = beforeTimeStamp;
            firstStep = false;
        }
        else
        {
            // get next vehicleVector
            vehicleVector = masterControl.traCIclient.simulateStep();
        }

        // process vehicleVector

        // set after timeStamp
        afterTimeStamp = System.currentTimeMillis();

        processingTime = afterTimeStamp - beforeTimeStamp;

        // calculate sleepTime
        sleepTime = referenceTimeStamp + ((i + 1) * 1000) …
Run Code Online (Sandbox Code Playgroud)

java simulation multithreading synchronization timestamp

3
推荐指数
1
解决办法
4123
查看次数

为什么en_GB语言环境认为1月1日是一年中的第52周?

事实证明,使用ww作为java日期格式字符串的星期是2011年1月1日语言环境时的52 en_GB.这是证明(使用scala REPL,虽然我可以使用Java程序完成此操作)

首先得到我的语言环境

scala> val en = java.util.Locale.getAvailableLocales.find(_.toString == "en") getOrElse error("no en")
en: java.util.Locale = en

scala> val en_GB = java.util.Locale.getAvailableLocales.find(_.toString == "en_GB") getOrElse error("no en_GB")
en_GB: java.util.Locale = en_GB
Run Code Online (Sandbox Code Playgroud)

现在是1月1日

scala> import java.util.Calendar; import Calendar._
import java.util.Calendar
import Calendar._

scala> Calendar.getInstance
res23: java.util.Calendar = java.util.GregorianCalendar[time=1300708839128,....]

scala> res23.set(MONTH, JANUARY); res23.set(DAY_OF_MONTH, 1)

scala> val firstJan = res23.getTime
firstJan: java.util.Date = Sat Jan 01 12:00:39 GMT 2011
Run Code Online (Sandbox Code Playgroud)

现在声明一个方法以依赖于语言环境的方式打印它:

scala> def weekInLocale(l : java.util.Locale) = { java.util.Locale.setDefault(l); new …
Run Code Online (Sandbox Code Playgroud)

java locale date

3
推荐指数
1
解决办法
1198
查看次数

斯卡拉:奇怪的是加入了一张地图

我刚刚注意到,虽然在向地图添加一对时需要澄清一些parens,但在重新分配时我并不需要它们:

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) Server VM, Java 1.6.0_18).
Type in expressions to have them evaluated.
Type :help for more information.
Run Code Online (Sandbox Code Playgroud)

给我一些价值

scala> var n = Map.empty[Int, String]
n: scala.collection.immutable.Map[Int,String] = Map()
Run Code Online (Sandbox Code Playgroud)

尝试添加到地图而没有明确的括号:

scala> n + 1 -> ""
<console>:30: error: type mismatch;
 found   : Int(1)
 required: (Int, ?)
              n + 1 -> ""
                  ^
Run Code Online (Sandbox Code Playgroud)

像我预期的那样失败.但通过重新分配做同样的事情不会:

scala> n += 1 -> ""

scala> n
res12: scala.collection.immutable.Map[Int,String] = Map(1 -> "")
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?为什么这不会失败?是scalac自己添加parens?

scala map

3
推荐指数
1
解决办法
802
查看次数

是否可以通过scala中的函数文字编写重复参数函数?

我们知道我们可以在scala中定义一个重复参数(varargs)函数,如下所示:

def func(s: String*) = println(s)
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在函数文字样式中重写上述内容.或者这样做不可能吗?

注意:(s: String) => println(s)不正确.

scala multiparameter

3
推荐指数
1
解决办法
312
查看次数

Scala actor作为单线程队列

我想在一个程序中使用actor,我会对某些演员有一些限制,好像他们是队列一样.例如,假设我有一些应用了更改事件的外部系统,还有一些外部系统数据的缓存.所以我有两个演员:

  1. ChangeApplicationActor
  2. CacheActor

作为一部分ChangeApplicationActor,当我将更改应用于X外部系统中的某个实体时,我想发送一些事件来告诉CacheActor同步:

val changeApplicationActor = actor { 
  loop {
    react {
      case ChangeInstruction(x) => 
        externalSystem.applyChange(x)
        cacheActor ! Sync(x)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但我现在有两个要求:

  1. CacheActor具有内部状态和理想,我想它来处理其Sync指令顺序
  2. 如果我最终收到CacheActor包含两个Sync(x)相同值的指令的收件箱x,那么我想忽略第二个Sync指令(即我应该只有一个挂起的指令用于任何给定的值x)

有没有办法强迫演员单线程?有什么方法可以访问演员的邮箱并删除任何重复的事件?难道我不能避免实施CacheActoras,嗯,不是演员吗?

scala message-queue concurrent-processing actor

2
推荐指数
1
解决办法
2134
查看次数

在Java中的构造函数中使用super()有什么问题?

当我对以下代码运行静态分析时:

  public ExtractDBScripts(String resBundleName)
    {
        super();
        m_mainBundle = ResourceBundle.getBundle(resBundleName);
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"JAVA 0058构造函数'ExtractDBScripts'调用super()".

super()从构造函数调用有什么问题?

java debugging constructor static-analysis

2
推荐指数
1
解决办法
858
查看次数

用Java立即杀死线程

是否可以在不引发异常的情况下终止Java线程?

这仅用于测试目的 - 我想模拟整个计算机死于中间线程的情况.

注意 - 我看到了一个已弃用的Thread.destroy()方法,但文档说它从未实现过.

java multithreading kill

2
推荐指数
1
解决办法
3156
查看次数

如何在java中处理两个jar文件?

我正在使用Netbeans IDE进行java项目.在这个项目中,我需要一个jar文件"htmlunit-2.6.jar".

我已将此jar文件包含在项目库文件夹中.我已经实例化了它的一个类"WebClient",但是这个类需要其他类的"commons-httpclient-3.1.jar"文件.

现在我还在项目库文件夹中包含了"commons-httpclient-3.1.jar"文件.但是当我编译我的源文件时,它会抛出

ClassNotFoundException:org.apache.commons.httpclient.auth.CredentialsProvider

请告诉我如何在一个jar文件中的一个类需要其他jar文件中的其他类时处理这种情况.

java netbeans jar classpath

2
推荐指数
1
解决办法
811
查看次数

在scala 2.7.5中对迭代器进行分区

看起来scala 2.7.5中没有partition方法Iterator(2.8中有).我想有一个分区不失懒惰Iterator,所以下面是不是一个选项:

itr.toList.partition( someTest(_) )
Run Code Online (Sandbox Code Playgroud)

任何人都可以推荐一种方法,而无需实现我自己的partition方法吗?例如,是否有某种方法可以将其Iterator转换为延迟评估的Stream

iterator scala lazy-evaluation scala-2.8

2
推荐指数
1
解决办法
1408
查看次数