Итак, пока я использую это:
Код: Выделить всё
import java.util.HashMap;
import java.util.Map;
public class TestModel
{
private Map map = new HashMap();
public void add(String id, byte data[])
{
synchronized (map)
{
map.put(id, data);
}
}
public void remove(String id)
{
synchronized (map)
{
map.remove(id);
}
}
public interface SyncIterator
{
public void next(String rid, byte data[]);
}
public void iterate(SyncIterator it)
{
synchronized (map)
{
map.forEach((k, v)->
{
it.next(k, v);
});
}
}
public static void main(String[] args)
{
TestModel t = new TestModel();
t.add("a", new byte[0]);
t.add("b", new byte[0]);
TestModel.SyncIterator it = new TestModel.SyncIterator()
{
@Override
public void next(String id, byte data[])
{
System.out.println("id: " + id);
}
};
t.iterate(it);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... or-pattern