Java 使用什么数据结构轻松搜索int max值并返回相关对象?
有两个类别Java 使用什么数据结构轻松搜索int max值并返回相关对象?,java,oop,Java,Oop,有两个类别拍卖和批。如何存储数据:Client(Thread)和Bid(int),以便Bid(lot.Max)可以轻松搜索此数据结构并返回相关的客户端对象 public class Lot { public HashMap<ClientThread, Integer> mapBids= new HashMap<ClientThread, Integer>(); } public class Auction { List<Lot> lots
拍卖
和批
。如何存储数据:Client(Thread)和Bid(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
}
}
公共类地块{
public HashMap mapBids=新HashMap();
}
公开拍卖{
列表批次=新的ArrayList();
用于(批次:批次){
int lastBid=lot.BiggestBid;
...
//如何获取具有“lot.BiggestBid”的客户端对象?
System.out.println(
lot.mapBids.get(lot.BiggestBid.someClientThreadMethod(args));//错误
}
}
可能我需要在Lot
中包含一对客户机
和最大出价
的数据结构,并且可以返回拥有最大出价
的客户机
对于某些实体,客户和/或BiggestBid可以是相同的
也许两个并行数组可以工作。您想要实现接口的东西——而不是HashMap,使用TreeMap?如果出价是唯一的,那么使用TreeMap。否则,请使用SortedList。如果在创建过程中没有指定比较器,则Map和List都使用自然顺序。最大和最小的密钥检索是非常有效的O(1)。如果您需要线程安全-使用SynchronizedCollection,如果SortedMap将有重复的密钥客户端或Bid怎么办?如果我使用synchronized方法访问列表,是否需要使用SynchronizedCollection?如果您不持有对同一集合的引用并同时对同一集合执行变异操作,您不需要同步收集。是否需要跟踪所有出价?如果您能够将
BiggestBid
存储在Lot
中,您是否也能够存储此BiggestBid
所来自的客户机
?是的,我可以,但在这种情况下,我无法显示所有客户机及其以前的出价。