我有一個在下面的代碼中顯示的方法,我有一個 hashmap 緩沖區和佇列,其中有幾個串列。我想搜索特定訊息以在穩定時將其設定為 true;訊息可能在緩沖區或佇列中。可以將兩個 for 回圈集中在一個方法中嗎?或者有沒有更好的方法來反映我的意圖。
因此,如果訊息在緩沖區中,則將其設定為 true,否則將檢查佇列;如果未找到,則回傳 false
public static boolean SetMessageToStable(int event_actor, Message msg) {
if (mBuffer.get(event_actor) != null) {
for (int i = 0; i < mBuffer.get(event_actor).size(); i ) { // iterate the list of event actor to find matching message
if (mBuffer.get(event_actor).get(i).equals(msg)) {
mBuffer.get(event_actor).get(i).setMsg_stable(true); // set stable if found
return true;
}
}
}
if (DQ.get(event_actor) != null) {
for (int i = 0; i < DQ.get(event_actor).size(); i ) { // search the event actor's DQ if the message has not been found
if (DQ.get(event_actor).get(i).equals(msg)) {
DQ.get(event_actor).get(i).setMsg_stable(true); // set stable if found
return true;
}
}
}
return false;
}
uj5u.com熱心網友回復:
可以將兩個 for 回圈集中在一個方法中嗎?
當然。
有沒有更好的方法來反映我的意圖?
除了正在評估的特定映射(DQ vs mBuffer)之外,這兩個回圈是相同的。你可以很容易地做到這一點:
public static boolean SetMessageToStable(int event_actor, Message msg) {
return SetMessageToStableInternal(mBuffer, event_actor, msg)
|| SetMessageToStableInternal(DQ, event_actor, msg);
}
private static boolean SetMessageToStableInternal(
Map<Integer, List<Message>> map,
int event_actor,
Message msg
) {
List<Message> msgList = map.get(event_actor);
if (msgList != null) {
for (int i = 0; i < msgList.size(); i ) {
Message m = msgList.get(i);
if (m.equals(msg)) {
m.setMsg_stable(true);
return true;
}
}
}
return false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447986.html
上一篇:如何在Java中將Date2022-02-02(yyyy-dd-MM)轉換為02-Feb-2022?
下一篇:如何從意圖回傳ArrayList
