我有一个带有队列对象的hashmap
,我希望每当我查看一个对象时,按照它们在队列中的顺序查看不同队列中的不同对象,通常是消费者 - 生产者问题;
public class MainQueue {
public static Map<Integer, SingleQueue> list = new ConcurrentHashMap<>();
public MainQueue() {
}
public Map getQueue() {
return this.list;
}
public void addToMainQueue(SendObject sfo) {
int ohashcode = sfo.hashCode();
if (!list.containsKey(ohashcode)) {
list.put(ohashcode, new SingleQueue());
list.get(ohashcode).addQueue(sfo);
} else {
list.get(ohashcode).addQueue(sfo);
}
}
public SendObject getFromQueue() {
???
return TempFax;
}
}
---------HashMap-------------
423532,queue1:{1,2,3,4,5,6,7,8,9}
564898,queue2:{a,b,c,d,e}
039894,queue3:{x,y,z}
当我调用getFromQueue函数时,它应该返回'1' 在我打电话后,返回'a' 在我打电话后,返回'x'
finally= 1,a,x,2,b,y,3,c,z,4,d,5,e,6,7,8,9
我该怎么做?
答案 0 :(得分:0)
根据您的问题,您有兴趣以FIFO顺序检索这些元素,并且您需要某种方法将它们分组为哈希码。
我建议将这些SendObject添加到像LinkedList&lt; SendObject&gt;这样的单个队列中,这样你就可以逐个poll()这些元素。
如果您需要某种方法将不同的项目分组(或者在您的情况下为哈希码),您可以在SendObject中添加一个类别字段,以便跟踪这些项目。