Archived
0

filter set before build graph

This commit is contained in:
iMoHax
2015-10-15 15:49:41 +03:00
parent 5dfd8fe571
commit 53fb4ea942
2 changed files with 13 additions and 1 deletions

View File

@@ -28,12 +28,17 @@ public abstract class AbstractGraph<T> implements Graph<T> {
callback.startBuild(start); callback.startBuild(start);
minJumps = 1; minJumps = 1;
root = getInstance(start, maxDeep, maxDeep); root = getInstance(start, maxDeep, maxDeep);
GraphBuilder builder = createGraphBuilder(root, set, maxDeep - 1, limit); Collection<T> filteredSet = filtered(set);
GraphBuilder builder = createGraphBuilder(root, filteredSet, maxDeep - 1, limit);
builder.compute(); builder.compute();
onEnd(); onEnd();
callback.endBuild(); callback.endBuild();
} }
protected Collection<T> filtered(Collection<T> set){
return set;
}
protected void onEnd(){ protected void onEnd(){
} }

View File

@@ -7,6 +7,7 @@ import ru.trader.core.Profile;
import ru.trader.core.Ship; import ru.trader.core.Ship;
import java.util.Collection; import java.util.Collection;
import java.util.stream.Collectors;
public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T> { public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T> {
private final static Logger LOG = LoggerFactory.getLogger(ConnectibleGraph.class); private final static Logger LOG = LoggerFactory.getLogger(ConnectibleGraph.class);
@@ -35,6 +36,12 @@ public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T>
super.build(start, set, profile.getJumps(), getShip().getTank()); super.build(start, set, profile.getJumps(), getShip().getTank());
} }
@Override
protected Collection<T> filtered(Collection<T> set) {
final double maxDistance = getShip().getMaxJumpRange() * profile.getJumps();
return set.parallelStream().filter(v -> root.getEntry().getDistance(v) <= maxDistance).collect(Collectors.toList());
}
protected class ConnectibleGraphBuilder extends GraphBuilder { protected class ConnectibleGraphBuilder extends GraphBuilder {
protected ConnectibleGraphBuilder(Vertex<T> vertex, Collection<T> set, int deep, double limit) { protected ConnectibleGraphBuilder(Vertex<T> vertex, Collection<T> set, int deep, double limit) {