io.fabric8.utils.CountingMap Maven / Gradle / Ivy
/**
* Copyright 2005-2016 Red Hat, Inc.
*
* Red Hat licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package io.fabric8.utils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Maps String keys to their counter value
*/
public class CountingMap {
private Map keyToCount = new HashMap();
@Override
public String toString() {
return "CountingMap{" + keyToCount + '}';
}
/**
* Increments the counter of all the given keys
*/
public void incrementAll(Iterable keys) {
for (String key : keys) {
increment(key);
}
}
/**
* Increments the given key
*/
public int increment(String key) {
int count = count(key) + 1;
setCount(key, count);
return count;
}
public void decrementAll(List keys) {
for (String key : keys) {
decrement(key);
}
}
/**
* Decrements the given key
*/
public int decrement(String key) {
int count = count(key) - 1;
if (count <= 0) {
keyToCount.remove(key);
return 0;
} else {
setCount(key, count);
return count;
}
}
/**
* Returns the count of the given key
*/
public int count(String key) {
Integer answer = keyToCount.get(key);
return answer == null ? 0 : answer;
}
/**
* Returns all the keys with a value of > 0
*/
public Set keySet() {
return keyToCount.keySet();
}
/**
* Returns the total of all counters
*/
public int total() {
int answer = 0;
for (Integer value : keyToCount.values()) {
if (value != null) {
answer += value;
}
}
return answer;
}
/**
* Updates the counter value for the given key
*/
public void setCount(String key, int value) {
keyToCount.put(key, value);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy