filter set before build graph
This commit is contained in:
@@ -28,12 +28,17 @@ public abstract class AbstractGraph<T> implements Graph<T> {
|
||||
callback.startBuild(start);
|
||||
minJumps = 1;
|
||||
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();
|
||||
onEnd();
|
||||
callback.endBuild();
|
||||
}
|
||||
|
||||
protected Collection<T> filtered(Collection<T> set){
|
||||
return set;
|
||||
}
|
||||
|
||||
protected void onEnd(){
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import ru.trader.core.Profile;
|
||||
import ru.trader.core.Ship;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T> {
|
||||
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());
|
||||
}
|
||||
|
||||
@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 ConnectibleGraphBuilder(Vertex<T> vertex, Collection<T> set, int deep, double limit) {
|
||||
|
||||
Reference in New Issue
Block a user