0

有两个类AuctionLot。如何存储数据:Client (Thread) 和 Bid (int) 这样的数据结构可以很容易地被 Bid(lot.Max) 搜索并返回相关的 Client 对象?

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一个数据结构来保存一对Clientand BiggestBid,并且可以返回Client谁拥有BiggestBid......


对于某些实体,Client 和/或 BiggestBid 可以相同。


也许两个并行阵列会起作用。

4

2 回答 2

1

如果出价是唯一的 - 使用 TreeMap。否则,使用 SortedList。如果在创建期间未指定比较器,则 Map 和 List 都使用自然顺序。最大和最小的键检索非常有效 O(1)。如果您需要线程安全 - 使用 SynchronizedCollection,

于 2012-06-02T04:28:09.073 回答
0

您想要实现SortedMap接口的东西——而不是 HashMap,使用 TreeMap?

于 2012-06-02T04:17:34.003 回答