From 94f6bc9420d14552cd0ef36bd1dbdad78841d158 Mon Sep 17 00:00:00 2001 From: vektor Date: Sat, 25 Jun 2016 15:59:04 +0300 Subject: [PATCH] Greatly speedup of work with station list and with wholl application at all, as a result --- .../ru/trader/store/simple/SimpleMarket.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/ru/trader/store/simple/SimpleMarket.java b/core/src/main/java/ru/trader/store/simple/SimpleMarket.java index 9524da6..184b5a7 100644 --- a/core/src/main/java/ru/trader/store/simple/SimpleMarket.java +++ b/core/src/main/java/ru/trader/store/simple/SimpleMarket.java @@ -10,7 +10,7 @@ import java.util.stream.Stream; public class SimpleMarket extends AbstractMarket { private final static Logger LOG = LoggerFactory.getLogger(SimpleMarket.class); - protected Set systems; + protected Map systems; protected List items; protected List groups; @@ -23,7 +23,7 @@ public class SimpleMarket extends AbstractMarket { } protected void init() { - systems = new TreeSet<>(); + systems = new TreeMap<>(); items = new ArrayList<>(); groups = new ArrayList<>(); } @@ -57,6 +57,11 @@ public class SimpleMarket extends AbstractMarket { } } + @Override + public Place get(String name) { + return systems.get(name.toUpperCase()); + } + @Override protected Place createPlace(String name, double x, double y, double z) { return new SimplePlace(name, x, y, z); @@ -74,7 +79,7 @@ public class SimpleMarket extends AbstractMarket { @Override protected void addPlace(Place place) { - systems.add(place); + systems.put(place.getName().toUpperCase(), place); for (Vendor vendor : place.get()) { onAdd(vendor); } @@ -82,7 +87,7 @@ public class SimpleMarket extends AbstractMarket { @Override protected void removePlace(Place place) { - systems.remove(place); + systems.remove(place.getName().toUpperCase()); for (Vendor vendor : place.get()) { onRemove(vendor); } @@ -122,7 +127,7 @@ public class SimpleMarket extends AbstractMarket { @Override public Collection get() { - return systems; + return systems.values(); } @Override @@ -191,9 +196,9 @@ public class SimpleMarket extends AbstractMarket { @Override protected void updateName(AbstractPlace place, String name) { LOG.trace("Replace system {} on change name", place); - systems.remove(place); + systems.remove(place.getName().toUpperCase()); super.updateName(place, name); - systems.add(place); + systems.put(place.getName().toUpperCase(), place); } @Override @@ -213,7 +218,7 @@ public class SimpleMarket extends AbstractMarket { Map> sellOffers = new HashMap<>(); Map> buyOffers = new HashMap<>(); - systems.stream().flatMap(s -> s.get().stream()) + systems.values().stream().flatMap(s -> s.get().stream()) .flatMap(v -> Stream.concat(v.getAllSellOffers().stream(), v.getAllBuyOffers().stream())) .forEach(o -> { Map> m = o.getType() == OFFER_TYPE.SELL ? sellOffers : buyOffers;