0

2つのクラスAuctionとがありLotます。データの保存方法:このデータ構造をBid(lot.Max)で簡単に検索し、関連するClientオブジェクトを返すことができるように、Client(Thread)とBid(int)を保存しますか?

public class Lot {

    public HashMap<ClientThread, Integer> mapBids= new HashMap<ClientThread, Integer>();
}

public class Auction {
    List<Lot> lots = new ArrayList<Lot>();
        for(Lot lot: lots){
            int lastBid = lot.BiggestBid;
            ...
              // How to get Client object which has "lot.BiggestBid" ? 
             System.out.println(
                 lot.mapBids.get(lot.BiggestBid).someClientThreadMethod(args)); // wrong 

         }
  }

おそらく、とLotのペアを保持し、持っている人を返すことができるデータ構造が必要です...ClientBiggestBidClientBiggestBid


クライアントやBiggestBidは、一部のエンティティで同じにすることができます。


たぶん、2つの並列アレイが機能します。

4

2 に答える 2

1

入札単価が一意の場合は、TreeMapを使用します。それ以外の場合は、SortedListを使用します。作成中にコンパレータが指定されていない場合、マップとリストはどちらも自然な順序を使用しています。最大および最小のキー検索は非常に効率的なO(1)です。スレッドセーフが必要な場合は、SynchronizedCollectionを使用してください。

于 2012-06-02T04:28:09.073 に答える
0

SortedMapインターフェースを実装するものが必要です-HashMapの代わりにTreeMapを使用しますか?

于 2012-06-02T04:17:34.003 に答える