From ab8741a33513d52a5334e92e1c05fdf0101b05df Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 7 Feb 2017 09:53:46 +0100 Subject: [PATCH] get rid of google guava dep --- jsprit-core/pom.xml | 6 ---- .../core/util/UnassignedJobReasonTracker.java | 30 +++++++++---------- .../util/UnassignedJobReasonTrackerTest.java | 16 ++++++++++ 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/jsprit-core/pom.xml b/jsprit-core/pom.xml index 3ae778a0..f3d79fc0 100644 --- a/jsprit-core/pom.xml +++ b/jsprit-core/pom.xml @@ -42,12 +42,6 @@ ${logger.version} - - com.google.guava - guava - 21.0 - - diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java index c558725e..1a07c12b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java @@ -18,22 +18,21 @@ package com.graphhopper.jsprit.core.util; -import com.google.common.collect.HashMultiset; -import com.google.common.collect.Multiset; import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobUnassignedListener; import com.graphhopper.jsprit.core.problem.job.Job; +import org.apache.commons.math3.stat.Frequency; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; -import java.util.Set; /** * Created by schroeder on 06/02/17. */ public class UnassignedJobReasonTracker implements JobUnassignedListener { - Map> reasons = new HashMap<>(); + Map reasons = new HashMap<>(); Map codesToReason = new HashMap<>(); @@ -56,11 +55,10 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener { @Override public void informJobUnassigned(Job unassigned, Collection failedConstraintNames) { if (!this.reasons.containsKey(unassigned.getId())) { - Multiset ms = HashMultiset.create(); - this.reasons.put(unassigned.getId(), ms); + this.reasons.put(unassigned.getId(), new Frequency()); } for (String r : failedConstraintNames) { - this.reasons.get(unassigned.getId()).add(r); + this.reasons.get(unassigned.getId()).addValue(r); } } @@ -83,13 +81,13 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener { * @return */ public int getCode(String jobId) { - Multiset reasons = this.reasons.get(jobId); + Frequency reasons = this.reasons.get(jobId); String mostLikelyReason = getMostLikely(reasons); return toCode(mostLikelyReason); } public String getReason(String jobId) { - Multiset reasons = this.reasons.get(jobId); + Frequency reasons = this.reasons.get(jobId); String mostLikelyReason = getMostLikely(reasons); int code = toCode(mostLikelyReason); if (code == -1) return mostLikelyReason; @@ -102,15 +100,15 @@ public class UnassignedJobReasonTracker implements JobUnassignedListener { else return -1; } - private String getMostLikely(Multiset reasons) { - Set set = reasons.elementSet(); + private String getMostLikely(Frequency reasons) { + Iterator, Long>> entryIterator = reasons.entrySetIterator(); int maxCount = 0; String mostLikely = null; - for (String r : set) { - int count = reasons.count(r); - if (count > maxCount) { - mostLikely = r; - maxCount = count; + while (entryIterator.hasNext()) { + Map.Entry, Long> entry = entryIterator.next(); + if (entry.getValue() > maxCount) { + Comparable key = entry.getKey(); + mostLikely = key.toString(); } } return mostLikely; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java index 1e43908b..3981eed3 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java @@ -34,11 +34,13 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; +import org.apache.commons.math3.stat.Frequency; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; /** @@ -137,4 +139,18 @@ public class UnassignedJobReasonTrackerTest { Assert.assertEquals(1, solution.getUnassignedJobs().size()); Assert.assertEquals(4, reasonTracker.getCode(solution.getUnassignedJobs().iterator().next().getId())); } + + @Test + public void testFreq() { + Frequency frequency = new Frequency(); + frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint"); + frequency.addValue("b"); + frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint"); + + Iterator, Long>> entryIterator = frequency.entrySetIterator(); + while (entryIterator.hasNext()) { + Map.Entry, Long> e = entryIterator.next(); + System.out.println(e.getKey().toString() + " " + e.getValue()); + } + } }