基本上,我有三个变量a,b和c,它们之间有一定的关系。我需要将变量存储在HashSet中,这样每个变量就会不同,并且不会有任何冗余。
Java方法:
在java中,我只需创建一个自定义类,重写该自定义类中的散列和相等的方法,我就可以完成了。
HashSet<CustomClass> hSet = new HashSet<CustomClass>();Scala way (Scala新手):
在这里,我很困惑如何在特质、类别和对象之间做出选择。显然,在第一次查看时,我不能将属性和类分配给var / val (请告诉我上面是否可以这样做)。所以,物体是要走的路。
object State {
    var a: Int;
    var b: Int;
    var c: Int;
}问题1: 如何定义自定义(类/特征/对象) HashSet?
Scala中的正常HashSet声明:var hSet = new HashSet();
问题2:如何为新对象赋值?例如,
var newState = State;
newState.a = 100;
hSet.add(newState);错误:类型错配;找到: Int(100)必需: Int.type
谢谢
发布于 2015-11-02 17:07:01
简单的回答是: Scala方法和Java方法是一样的。也就是说,case类可以通过自动构造有效的散列和等于方法(以及toString和apply )来帮助您。事情是这样的:
case class MyClass(myInt: Int, myString: String)
val hSet = new mutable.HashSet[MyClass]();
hSet += MyCLass(2, "foo") 注意,HashSets有类型参数,就像在Java中一样。对于不可变集,语法略有变化,但从Java开始使用时会感觉更容易一些。
此外,在定义object时,基本上是用单个实例(单例模式)定义类。这显然不是你想要的。
https://stackoverflow.com/questions/33482239
复制相似问题