有两个类AuctionLot。如何存储数据:客户端(线程)和出价(int)以这种方式可以通过Bid(lot.Max)轻松搜索此数据结构并返回相关的客户端对象?

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中需要一个数据结构,该数据结构将容纳一对ClientBiggestBid,并且可以返回具有ClientBiggestBid



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



也许两个并行数组会起作用。

最佳答案

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

08-04 06:48