2015-04-22 2 views
1

У меня есть hashmap с объектом очереди, и я хочу заглянуть в разные очереди в разных очередях в том порядке, в котором они находятся в очереди, каждый раз, когда я просматриваю объект, как правило, проблему с производителем-потребителем;Java peek следующий элемент в 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» после того, как я называю, возврат «а» после того, как я называю, возврат «х»

finally= 1,a,x,2,b,y,3,c,z,4,d,5,e,6,7,8,9 

Как я могу это сделать?

+1

В чем проблема? – Maroun

+1

Извините, я отредактировал свой вопрос. – cagdas

+0

В качестве побочного примечания вы, вероятно, не должны использовать хеш-коды в качестве ключа ... Два объекта могут иметь один и тот же хэш-код. Как правило, точка хэш-карты должна иметь, например, «Карта ». – Radiodef

ответ

0

Исходя из вашего вопроса, вы заинтересованы в извлечении этих элементов в порядке FIFO, и вам нужно каким-то образом сгруппировать их в хэш-коды.

Я предлагаю добавить эти SendObject в одну очередь, такую ​​как LinkedList <SendObject>, таким образом вы можете опросить() эти элементы по одному.

Если вам нужно каким-то образом группировать различные элементы в категории (или хэш-коды в вашем случае), вы можете добавить поле категории, например, в SendObject, чтобы вы могли отслеживать их.

+1

HashMap содержит тысячи SingleQueue, dequeue и enqueue происходит в одно и то же время для каждой очереди. Мне нужно упорядочить первый объект очереди. Каждый раз, когда первый объект другой очереди. – cagdas

Смежные вопросы