基本上我有三个变量a,b和c . 变量之间有一定的关系 . 我需要将变量存储在HashSet中,以便每个变量都不同,并且不会有任何冗余 .
Java way:
在java中我只是创建一个自定义类,在该自定义类中覆盖哈希和相等的方法,我将完成 .
HashSet<CustomClass> hSet = new HashSet<CustomClass>();
Scala way (Scala newbie):
Introduction to Sets and Maps for Scala
在这里,我很难在特质,类和对象之间进行选择 . 显然,在第一眼看来我不能将特性和类分配给var / val(如果可以做到,请告诉我) . 所以对象就是要走的路 .
object State {
var a: Int;
var b: Int;
var c: Int;
}
Question 1: How should I define a custom (class/trait/object) HashSet?
Scala中的普通HashSet声明: var hSet = new HashSet();
Question 2: How to assign value to the new object? for example,
var newState = State;
newState.a = 100;
hSet.add(newState);
Error : type mismatch; found : Int(100) required: Int.type
谢谢
1 回答
简短的回答是:Scala方式与Java方式相同 . 也就是说,案例类可以通过自动构建有效的哈希和等于方法(以及
toString
和apply
)来帮助您 . 它是这样的:请注意,HashSets具有类型参数,就像在Java中一样 . 对于不可变集合,语法略有不同,但是从Java中获取这将会更容易 .
此外,当您定义
object
时,您基本上定义了一个具有单个实例的类(单例模式) . 这显然不是你想要的 .