package com.carrotsearch.hppc.examples;
import org.junit.Test;
import com.carrotsearch.hppc.IntIntHashMap;
import com.carrotsearch.hppc.procedures.IntIntProcedure;
/**
* An example of plucking a value from an anonymous inner class.
*/
public class HppcExample_005_ForEachValues {
@Test
public void forEach_FilteredCounting() {
// Create a map of key-value pairs.
final IntIntHashMap map = new IntIntHashMap();
map.put(1, 2);
map.put(2, -5);
map.put(3, 10);
map.put(4, -1);
// And count only non-negative values. Note the "counter"
// is physically part of the anonymous inner class but we can
// access it because of how forEach is declared (it returns the exact
// subclass type of the argument).
int count = map.forEach(new IntIntProcedure() {
int counter;
public void apply(int key, int value) {
if (value >= 0) {
counter++;
}
}
}).counter;
System.out.println("There are " + count + " values that are non-negative.");
}
}