Шаблон синхронного итератора? [закрыто] ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Шаблон синхронного итератора? [закрыто]

Сообщение Anonymous »

В случаях, когда есть модель данных, но мы не хотим клонировать, копировать или внедрять логику, должен быть способ синхронно перебирать данные.
Итак, пока я использую это:

Код: Выделить всё

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);
}
}
Но если нет hasNext() или при торможении он перебирает весь список. Каков правильный формат этого шаблона?

Подробнее здесь: https://stackoverflow.com/questions/791 ... or-pattern

Вернуться в «JAVA»