scala - 在scala中添加一个对象列表

标签 scala

我试图添加并反对列表,而不仅仅是数字,所以当您举一个例子答复时,是否可以使用像我的二手车例子或水果之类的对象
我一直在寻找我在所有地方看到的所有示例,它们只是将数字添加到列表中。
我正在尝试将一些Java代码转换为Scala
转换时遇到问题的Java代码是

ArrayList usedCarList = new ArrayList();
UsedCars usedCar = new UsedCars();
usedCarList.add(usedCar);

现在,我看了一些示例,但是一旦我开始尝试使用对象,它们似乎就无法工作,即
var b = List[Int](); 
b ::= 1; 
b ::= 2; 
b ::= 3; 

我已经尝试过以下几项内容。
var usedCarList = List();
def addCar (usedCarList: List[UsedCars]){
var usedCar = new UsedCars();
series of set operations on the usedCar
usedCar :: usedCarList;
println(usedCarList.length);
}

当我检查列表的大小时,它总是空的

最佳答案

Scala的List和Java的ArrayList之间有根本的区别:Scala的List是不可变的。

不只是只读-创建Java的人可能仍会更改Java中的只读集合。在Scala中,任何人都不能更改List

现在,让我们与显示“works”的示例进行协调:b ::= 1。该示例等效于b = 1 :: b,因此它不会更改列表。相反,它正在创建一个新列表,并将其分配给b。这听起来效率低下,但实际上速度非常快,因为List是持久的数据结构(有关更多信息,请查找该结构)。

因此,对您问题的最明显答案是使用另一种数据结构。 Scala最接近ArrayList的等效项是ArrayBuffer

但是,还有另一种可能的追求。而不是更改列表且不返回任何内容,而是返回一个新列表。这很可能需要对代码的结构进行其他更改,并且由于没有细节,因此我不会猜测它们可能是什么。

关于scala - 在scala中添加一个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750759/

相关文章:

java - Apache Mailer 在 Scala 中抛出编译器错误?

web-applications - 用于 Lift Web 应用程序的 CouchDB 或 MongoDB?

scala - 扩展类型参数的特征

scala - 为什么开发和生产模式会导致不同的网页?

scala - 将代码块分配到 Val

arrays - 在 Scala 中创建一个 n1 "zeros"和 n2 "ones"的数组

scala - 为什么在某些情况下包对象隐式成员对子包可见?

scala - Play 框架模板没有 Html 类型

scala - 使用流的内容更改源中的具体化值

scala - 在 ActionRefiner 之后,Play Framework 2.4 Scala 缺少 Action 中隐式请求的参数类型