2013-04-01 5 views
5

私は中古車の例や果物などのオブジェクトを使用できる場合に例を使って返信するときに、数字だけでなくリストにも追加しようとしています 私は、私が見ているすべての例がどこにあっても、リストに数字を追加するだけです。
イム変換Scalaの JavaコードイムたトラブルにいくつかのJavaコードを変換しようとすると、今、私はいくつかの例を見てきたオブジェクトをスカラーでリストに追加する

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

ですが、彼らは私がオブジェクトを使用しようとし始めると動作するようには思えいけませんie

var b = List[Int](); 
b ::= 1; 
b ::= 2; 
b ::= 3; 

私はいくつかのことを試しましたが、以下に1つ挙げます。私は

+0

また、私はどこにでもそれが場所に私にとって重要な場所としてそれを挿入する気にしない。 – Jeremy

+0

コメントから、上のコードはどのように_using_コードではなく、代わりに 'var'を宣言し、それを他のもののパラメータとして渡して変更します。あなたが実際にやっていることを述べるために質問を編集してください。 –

+0

申し訳ありませんが、私のコードが実際にどのように見えるかという主な質問を編集しました。だから私はメインメソッドでリストを作成し、このaddCar関数に渡します。ここでusedCarsがリストに追加されます。同様に私はリストから自動車を削除するremoveCar関数を持っています。 – Jeremy

答えて

3

ScalaのListとJavaのArrayListの間には基本的な違いがあります.ScalaのListは不変です。

単なる読み取り専用ではありません。Javaの読み取り専用コレクションは、誰でも作成できます。 Scalaでは、List誰でもで変更できません。

ここでは、「作品」を示した例と調整しましょう:b ::= 1。この例はb = 1 :: bに相当するので、リストを変更していません。代わりに、の新しいリストを作成し、それをbに割り当てます。それは非効率的に聞こえるかもしれませんが、Listは永続的なデータ構造であるため、実際は非常に高速です(詳細は、これを参照してください)。

あなたの質問に対する最も明白な答えは、したがって、異なる種類のデータ構造を使用することです。 ScalaのArrayListに最も近いのはArrayBufferです。

しかし、別の可能性があります。リストを変更して何も返さない代わりに、新しいリストを返します。それはコードの構造の他の変更を必要とするかもしれませんし、それについての詳細はないので、私はそれらが何であるかを推測しません。

4

その常に空のリストのサイズをチェックする際

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([email protected]) 

scala> list.size 
res1: Int = 1 

参照SU-の不変のリストを参照を再割り当てするための答えを。

+0

リストを関数に渡すとき、これはどのように機能しますか?関数のparemeterは単なるListですか? – Jeremy

+0

'MutableList'のインスタンスに対して' toList'を呼び出すことができます。 'MutableList'は、渡すことができる' List'のインスタンスに変換します。 'MutableList'とその代替方法の詳細については、これを見てください:http://stackoverflow.com/questions/5446744/difference-between-mutablelist-and-listbuffer –

+0

私のコードがどのように編成されているかをより明確にしたと思います。この作品を作る。 私の主な方法は、リストが作成され、addCar関数に渡され、carがリストに追加されます。その他の機能は、中古カーをリストに表示し、そのリストから車を取り除くために使用されます。 これは、変更可能なリストまたは変更不可能なリストを使用してこれを行う方が簡単ですか? もし私が変更可能な例に従えば、addCars関数の外観は – Jeremy

関連する問題