|
From: <jom...@us...> - 2014-10-17 15:44:15
|
Revision: 1815
http://sourceforge.net/p/jason/svn/1815
Author: jomifred
Date: 2014-10-17 15:44:12 +0000 (Fri, 17 Oct 2014)
Log Message:
-----------
improve compareTo methods to profit the performance of Java 8 hash maps
Modified Paths:
--------------
trunk/src/jason/asSemantics/Intention.java
trunk/src/jason/asSyntax/PredicateIndicator.java
trunk/src/jason/bb/DefaultBeliefBase.java
trunk/src/test/TermTest.java
Modified: trunk/src/jason/asSemantics/Intention.java
===================================================================
--- trunk/src/jason/asSemantics/Intention.java 2014-10-07 18:23:22 UTC (rev 1814)
+++ trunk/src/jason/asSemantics/Intention.java 2014-10-17 15:44:12 UTC (rev 1815)
@@ -167,6 +167,9 @@
public int compareTo(Intention o) {
if (o.atomicCount > this.atomicCount) return 1;
if (this.atomicCount > o.atomicCount) return -1;
+
+ if (o.id > this.id) return 1;
+ if (this.id > o.id) return -1;
return 0;
}
@@ -178,7 +181,7 @@
}
public int hashCode() {
- return String.valueOf(id).hashCode();
+ return new Integer(id).hashCode();
}
public Intention clone() {
Modified: trunk/src/jason/asSyntax/PredicateIndicator.java
===================================================================
--- trunk/src/jason/asSyntax/PredicateIndicator.java 2014-10-07 18:23:22 UTC (rev 1814)
+++ trunk/src/jason/asSyntax/PredicateIndicator.java 2014-10-17 15:44:12 UTC (rev 1815)
@@ -7,7 +7,7 @@
*
* @author jomi
*/
-public final class PredicateIndicator implements Serializable {
+public final class PredicateIndicator implements Comparable<PredicateIndicator>, Serializable {
private final String functor;
private final int arity;
@@ -47,6 +47,15 @@
return hash;
}
+ @Override
+ public int compareTo(PredicateIndicator pi) {
+ int c = this.functor.compareTo(pi.functor);
+ if (c != 0) return c;
+ if (pi.arity > this.arity) return -1;
+ if (this.arity > pi.arity) return 1;
+ return 0;
+ }
+
private int calcHash() {
final int PRIME = 31;
int t = PRIME * arity;
Modified: trunk/src/jason/bb/DefaultBeliefBase.java
===================================================================
--- trunk/src/jason/bb/DefaultBeliefBase.java 2014-10-07 18:23:22 UTC (rev 1814)
+++ trunk/src/jason/bb/DefaultBeliefBase.java 2014-10-17 15:44:12 UTC (rev 1815)
@@ -362,12 +362,13 @@
}
/** a literal that uses equalsAsTerm for equals */
- final class LiteralWrapper {
+ final class LiteralWrapper implements Comparable<LiteralWrapper> {
final private Literal l;
public LiteralWrapper(Literal l) { this.l = l; }
public int hashCode() { return l.hashCode(); }
public boolean equals(Object o) { return o instanceof LiteralWrapper && l.equalsAsStructure(((LiteralWrapper)o).l); }
public String toString() { return l.toString(); }
+ public int compareTo(LiteralWrapper o) { return l.compareTo(o.l); }
}
}
}
Modified: trunk/src/test/TermTest.java
===================================================================
--- trunk/src/test/TermTest.java 2014-10-07 18:23:22 UTC (rev 1814)
+++ trunk/src/test/TermTest.java 2014-10-17 15:44:12 UTC (rev 1815)
@@ -16,6 +16,7 @@
import jason.asSyntax.ObjectTermImpl;
import jason.asSyntax.Plan;
import jason.asSyntax.Pred;
+import jason.asSyntax.PredicateIndicator;
import jason.asSyntax.StringTermImpl;
import jason.asSyntax.Structure;
import jason.asSyntax.Term;
@@ -658,6 +659,18 @@
assertTrue(new ListTermImpl().compareTo(new StringTermImpl("string")) > 0);
}
+ public void testComparePI() {
+ List<PredicateIndicator> l = new ArrayList<PredicateIndicator>();
+ l.add(new PredicateIndicator("b", 2));
+ l.add(new PredicateIndicator("b", 7));
+ l.add(new PredicateIndicator("a", 2));
+ l.add(new PredicateIndicator("a", 4));
+ l.add(new PredicateIndicator("a", 1));
+ l.add(new PredicateIndicator("b", 5));
+ Collections.sort(l);
+ assertEquals("[a/1, a/2, a/4, b/2, b/5, b/7]", l.toString());
+ }
+
public void testUnify4() throws ParseException {
Term a1 = ASSyntax.parseTerm("a(1)");
Term a2 = ASSyntax.parseTerm("a(X+1)");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|