2011-11-15 12 views
0

だから、一般的なarraylistの参照を比較しようとしています。containsを使用して一般的なarraylistの参照を比較する

for (int s=0; s<orders.size(); s++) { 
    if (orders.get(s).contains(cpCollection.get(m))) 
    System.out.println(orders.get(s).getSerial()); 
} 

containsメソッドのシンボルが見つかりませんというエラーメッセージが表示されます。 私はそれが普通のarraylistではないことに言及する必要があると思う。ここにいくつかのコードがあります。

受注クラス名がGenericOrderあるこの

ArrayList<GenericOrder<Product>> orders = new ArrayList<GenericOrder<Product>>(); 

です。ここでは、ファイルの先頭からいくつかのものを消去するコードを示します。

public class GenericOrder<T> { 
private ArrayList<T> products; 
public GenericOrder() { 
products = new ArrayList<T>(); 
} 
} 

だから基本的に私は、私がチェックできるように配列refencesを比較する必要がある場合はGenericOrderのArrayListにあるオブジェクトは注文がArrayListの内側に配置されている製品、。 containsがtrueを返した場合、getSerialメソッドである注文番号を印刷します。私がorders.get(1).getSerial();と言うならば、このメソッドは正常に動作します。これは "Order:1"を返します。

これは意味があると思います。私は必要に応じてコード全体を公開することができますが、私は大学の宿題以来、それを避けたいと思っています。

ありがとうございます。

+1

コンパイラによると、GenericOrderにはcontainsメソッドがありません。ちょうどそれを実装します。 Btw、cpCollectionとは何ですか? –

+0

cpCollectionはarraylistの別のタイプです。それにはComputerPartsという製品が含まれています。 (コンピュータ部門は製品から継承する)。 –

答えて

2

MAKKAMはコメントで述べているように、これは失敗している:

GenericOrder<Product> order = orders.get(s); 
order.contains(...) // Doesn't compile 

GenericOrderクラスが含まれています()メソッドを持っていません。

order.getProducts().contains(...); // Will work 

か含まれています()メソッドを実装:

public class GenericOrder<T> { 
    private ArrayList<T> products; 

    public boolean contains(T t) { 
    return products.contains(t); 
    } 
} 
+0

応答を待っている間にcontainsを実装しようとしました。何らかの理由で、両方のコレクションでtrueを返します。私はcompOrder配列とcompPartyOrder配列を作成しました。私がテストしているコンピュータの部分はcompOrderに追加されていますが、他のものは追加されていませんが、どちらにしてもtrueを返します。私は試したものの代わりにあなたのcontainsメソッドを使用しましたが、同じ結果でした。私は朝に戻ってきます。大変ありがとうございました。 –

1

HashMapことになったソリューションを

あなたの2つのソリューションは、内部リストを公開することのどちらかです。その完璧ではないが、それは動作します。
HashMapは、各製品オブジェクト(キー)と注文番号(値)を関連付けます。私はそれをserialNoに関連付けることができませんでした、それは常に5に設定され、本当にそれを100%にしようとする努力の価値がありませんでした。
これは0からorder.size()までのオーダーをループするために機能します。オーダーが作成されると、0から番号が付けられます。したがって、serialNo構造体または初期化された変数が変更されない限り、数値は並んでいます。私はおそらくそれのためにいくつかのマークを失うだろうが、正直なところ、私はちょうどそれが完了したい。

関連する問題