2つの引数を取るハッシュマップがあります。
private HashMap<Integer, car> carList;
HashMapに新しい値を入れることができるメソッドを正常に作成しました。今、私は、ハッシュマップの最初の引数を反復処理するために、forループまたはそれに類似したものをどのように使用できるのか疑問に思いました。同じint値(価格)を持つすべての車をリストしようとしています。
このkeySet()
メソッドを使用すると、マップキーを反復処理できます...
for(Integer price: carList.keySet()) {
// something
}
これを行う:
for(Integer price: carList.keySet()) {
car myCar = carList.get(price);
}
KeySet()メソッドを使用できます。
ドキュメントから:
このマップに含まれるキーのセットビューを返します。セットはマップに裏打ちされているため、マップへの変更はセットに反映され、その逆も同様です。セットに対する反復の進行中にマップが変更された場合(イテレーター自体の削除操作を除く)、反復の結果は未定義です。セットは、Iterator.remove、Set.remove、removeAll、retainAll、およびclear操作を介して、マップから対応するマッピングを削除する要素の削除をサポートします。addまたはaddAll操作はサポートされていません。
。
同じint値(価格)を持つすべての車をリストしようとしています。
価格をキーにするのは間違ったデザインです。キーとして範囲オブジェクトを持つことができます。つまり、価格帯。
キー(あなたの場合)によってマップから値を取得するにInteger
は、次のようにします。
carList.get(<your price>) --> this will get your the value(s) for this price
すべての価格を繰り返すには、次のようにします。
for(Integer price: carList.keySet()) {
.. your work
}
まず、変数名をcarMapに変更します。これで、次のいずれかを使用できます。
for(Integer price: carMap.keySet()) {
// something related to key.
}
また:
for(Entry<Integer,car> entry: carMap.entrySet()) {
car c = entry.getValue();
Integer ket = entry.getKey();
// something related to key and value.
}
ただし、キーが価格であり、価格ごとに1台の車を所有している場合、同じ価格の2台の車を所有することはできません。あなたは使用したいかもしれません:
Map<Integer, List<car>>