有两个类Auction
和Lot
。如何存储数据:客户端(线程)和出价(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
中需要一个数据结构,该数据结构将容纳一对Client
和BiggestBid
,并且可以返回具有Client
的BiggestBid
。对于某些实体,客户端和/或BiggestBid可以相同。
也许两个并行数组会起作用。
最佳答案
如果出价是唯一的-使用TreeMap。否则,请使用SortedList。如果在创建过程中未指定比较器,则Map和List都将使用自然顺序。最大和最小的键检索是非常有效的O(1)。如果您需要线程安全-使用SynchronizedCollection,