在scala中将对象添加到列表中

在scala中将对象添加到列表中,scala,Scala,我试图在列表中添加和反对对象,而不仅仅是一个数字,所以当你用一个例子回答时,如果你可以使用像我的二手车例子或水果之类的对象 我一直在到处寻找,我看到的所有例子都只是在列表中添加数字。 我正在尝试将一些java代码转换成scala 转换时遇到问题的java代码是 ArrayList usedCarList = new ArrayList(); UsedCars usedCar = new UsedCars(); usedCarList.add(usedCar); 现在我看了几个例子,但一旦我开始

我试图在列表中添加和反对对象,而不仅仅是一个数字,所以当你用一个例子回答时,如果你可以使用像我的二手车例子或水果之类的对象 我一直在到处寻找,我看到的所有例子都只是在列表中添加数字。
我正在尝试将一些java代码转换成scala 转换时遇到问题的java代码是

ArrayList usedCarList = new ArrayList();
UsedCars usedCar = new UsedCars();
usedCarList.add(usedCar);
现在我看了几个例子,但一旦我开始尝试使用对象ie,它们似乎就不起作用了

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.collection.mutable.MutableList
)和不可变的列表(
scala.collection.immutable.list
)。您使用的是不可变的列表,因此只需在元素上调用
,实际上会返回一个包含添加元素的新实例,但不会更改基础值。您必须将
var
与不可变列表一起使用,或者使用如下可变列表:

scala> import scala.collection._
import scala.collection._

scala> val list = mutable.MutableList[UsedCars]()
list: scala.collection.mutable.MutableList[UsedCars] = MutableList()

scala> list += new UsedCars()
res0: list.type = MutableList(UsedCars@4bfa79c8)

scala> list.size
res1: Int = 1

请参阅su-的答案,了解如何使用不可变列表重新分配引用。

Scala的
列表
和Java的
数组列表
之间有一个根本区别:Scala的
列表
是不可变的

不仅仅是只读——Java中的只读集合仍然可能由创建它的人更改。在Scala中,任何人都不能更改
列表

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

因此,对于您的问题,最明显的答案是使用不同类型的数据结构。Scala与
ArrayList
最接近的等价物是
ArrayBuffer


然而,还有另一种可能会被追求。与其更改列表而不返回任何内容,不如返回一个新列表。这可能需要对代码的结构进行其他更改,因为没有关于它的详细信息,所以我不会猜测它们可能是什么。

此外,我也不在乎它将它插入列表中的什么位置,因为它的位置对我来说无关紧要。从评论中可以看出,上面的内容不是你如何使用代码——相反,您声明了一个
var
并将其作为参数传递给其他人来更改它,对吗?请编辑问题以说明您实际在做什么。抱歉,我编辑了主要问题以了解代码的实际外观。因此,是的,我在一个main方法中创建了列表,并将其传递给addCar函数,在该函数中,usedCars被添加到列表中。类似地,我有一个removeCar函数,可以从列表中删除汽车。当将列表传递给函数时,这是如何工作的?函数中的参数表只是一个列表吗?您可以对
MutableList
的实例调用
toList
,将其转换为可以传递的
List
实例。有关
MutableList
和备选方案的更多信息,请参见本文:我想更好地说明我的代码是如何组织的将有助于确定如何使其工作的。我的主要方法是创建列表,然后将其传递给函数addCar,在该函数中,一辆车被添加到列表中。其他功能用于在列表中显示已使用的车辆,并从列表中删除车辆。使用可变列表和不可变列表哪个更容易做到这一点?因此,如果我遵循可变示例,addCars函数看起来会是什么样子如果你想使用可变列表,我建议围绕列表创建一个包装类。它将保留对列表的引用,并包含您的方法,例如addCar、removeCar。