update primitiveCollections to 0.1.20171216143737
Use intersection and union methods from IntList.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -69,26 +69,8 @@ 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user