假设我有一个HashMap<String, Integer>
,其中包含用户名及其在队列或行中作为int的位置。我将如何从队列中删除用户,然后为后面的用户更新所有值?
最佳答案
您可以按照以下步骤进行操作:
import java.util.LinkedHashMap;
import java.util.Map;
public class Main {
static Map<String, Integer> queueMap = new LinkedHashMap<String, Integer>();
public static void main(String[] args) {
queueMap.put("Arvind", 5);
queueMap.put("Avinash", 6);
queueMap.put("Kumar", 7);
queueMap.put("Lightcaster", 8);
queueMap.put("Stackoverflow", 9);
System.out.println("Before: " + queueMap);
removeFromQueue("Kumar");
System.out.println("After: " + queueMap);
}
static void removeFromQueue(String user) {
final Integer userPlace = queueMap.get(user);
if (userPlace != null) {
queueMap.replaceAll((k, v) -> v > userPlace ? v - 1 : v);
queueMap.remove(user);
}
}
}
输出:
Before: {Arvind=5, Avinash=6, Kumar=7, Lightcaster=8, Stackoverflow=9}
After: {Arvind=5, Avinash=6, Lightcaster=7, Stackoverflow=8}