Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用什么数据结构轻松搜索int max值并返回相关对象?_Java_Oop - Fatal编程技术网

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
所来自的
客户机
?是的,我可以,但在这种情况下,我无法显示所有客户机及其以前的出价。