所以我需要管理一堆日志文件以获取唯一ID。 对于我的地图,我希望唯一的ID是关键。但是,我需要管理的日志文件 可能包含每个ID的几个条目。
所以我的问题是如何做这样的事情:
地图(唯一ID,(事件队列))
因此,每当我在日志中遇到唯一ID的新事件时,我将如何添加该事件 事件到相应密钥的队列。
编辑: 例如:
Event e = new Event();
map.put(e.ID, queue.add(e));
那样的东西?
答案 0 :(得分:0)
下面的代码段会告诉您如何操作。请注意,此代码不考虑并发性,因此如果您的代码是多线程的,则可能需要在访问映射时添加一些同步逻辑。此外,使用的基础Queue数据结构将取决于您打算如何使用此队列。
Queue<Event> queue;
if(map.contains(e.ID)){
queue = map.get(e.ID);
} else{
queue = new ArrayBlockingQueue<Event>();
map.put(queue);
}
queue.add(e);
答案 1 :(得分:0)
你做这样的事情:
Event e = new Event();
// get queue from map
Queue<Event> eventQueue = map.get(e.ID);
if(eventQueue == null){
// no queue existed in map with e.ID
// create new queue, add to map
eventQueue = new LinkedList<Event>();
map.put(e.ID, eventQueue);
}
// add event in queue
eventQueue.add(e);
您的队列可以是特定的队列实现,如LinkedList
或ArrayBlockingQueue
,所以
eventQueue = new LinkedList<Event>();
或
eventQueue = new ArrayBlockingQueue<Event>();
答案 2 :(得分:0)
声明Event
对象的队列。
Queue<Event> queue=new LinkedList<>();
..........
..........
Map
声明将key
作为id
(String
类型)并将队列作为值:
Map<String, Queue<Event>> map = new HashMap<>();
现在,我们来了解如何向地图添加事件:
if(map.contains(id)){
queue = map.get(e.ID);
queue.offer(event);
}
else{
queue=new LinkedList<>();
map.put(id, queue);
queue.offer(event);
}