update primitiveCollections to 0.1.20171216143737

Use intersection and union methods from IntList.
This commit is contained in:
ahr
2017-12-16 17:35:16 +01:00
parent a2512b210f
commit 8225dd2077
2 changed files with 7 additions and 66 deletions

View File

@@ -6,19 +6,11 @@ dependencies {
compile project(':pdb-utils')
antlr "org.antlr:antlr4:4.7"
compile 'org.lucares:primitiveCollections:0.1.20171007100354'
compile 'org.lucares:primitiveCollections:0.1.20171216143737'
compile 'org.apache.commons:commons-lang3:3.6'
compile 'org.apache.logging.log4j:log4j-core:2.9.1'
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.9.1'
}
sourceSets {
generated{
java.srcDir "build/generated-src/antlr/main"
}
}
compileJava{
source += sourceSets.generated.java
}

View File

@@ -69,27 +69,9 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
final IntList leftFiles = left.visit(this);
final IntList rightFiles = right.visit(this);
final IntList result = new IntList(Math.min(leftFiles.size(), rightFiles.size()));
int l = 0;
int r = 0;
while (l < leftFiles.size() && r < rightFiles.size()) {
final int lv = leftFiles.get(l);
final int rv = rightFiles.get(r);
if (lv < rv) {
l++;
} else if (lv > rv) {
r++;
} else {
result.add(lv);
l++;
r++;
}
}
final IntList result = IntList.intersection(leftFiles,rightFiles);
assert result.isSorted();
return result;
}
@@ -101,7 +83,8 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
final IntList leftFiles = left.visit(this);
final IntList rightFiles = right.visit(this);
final IntList result = merge(leftFiles, rightFiles);
final IntList result = IntList.union(leftFiles, rightFiles);
assert result.isSorted();
return result;
}
@@ -202,7 +185,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
IntList result = new IntList();
for (final IntList intList : lists) {
result = merge(result, intList);
result = IntList.union(result, intList);
}
return result;
@@ -211,38 +194,4 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor<IntList> {
private boolean isMatchAll(final String stringValue) {
return Objects.equals("*", stringValue);
}
private IntList merge(final IntList leftFiles, final IntList rightFiles) {
final IntList result = new IntList(leftFiles.size() + rightFiles.size());
int l = 0;
int r = 0;
while (l < leftFiles.size() && r < rightFiles.size()) {
final int lv = leftFiles.get(l);
final int rv = rightFiles.get(r);
if (lv < rv) {
result.add(lv);
l++;
} else if (lv > rv) {
result.add(rv);
r++;
} else {
result.add(lv);
l++;
r++;
}
}
if (l < leftFiles.size()) {
final int length = leftFiles.size() - l;
result.addAll(leftFiles.get(l, length));
} else if (r < rightFiles.size()) {
final int length = rightFiles.size() - r;
result.addAll(rightFiles.get(r, length));
}
return result;
}
}