我试图添加并反对列表,而不仅仅是数字,所以当您举一个例子答复时,是否可以使用像我的二手车例子或水果之类的对象
我一直在寻找我在所有地方看到的所有示例,它们只是将数字添加到列表中。
我正在尝试将一些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/