synchronized (map) {
String sdata = map.get(key);
if (sdata == null) {
return false;
}
JsonArray data = new JsonArray(sdata);
if (data.contains(value)) {
JsonArray newData = new JsonArray();
boolean removed = false;
for (Object item : data) {
if (!removed) {
if (!item.equals(value)) {
newData.add(item);
} else {
removed = true;
}
} else {
newData.add(item);
}
}
if (newData.size() > 0) {
map.put((K) key, newData.encode());
} else {
map.remove((K) key);
}
return true;
}