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);
|
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(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user