Skip to content
Snippets Groups Projects
Verified Commit 33a88fc3 authored by David Procházka's avatar David Procházka
Browse files

FIX: contains method now uses bucket, removed constructor for stream

parent 49a4be80
No related branches found
No related tags found
No related merge requests found
package mhtree; package mhtree;
import messif.buckets.BucketStorageException;
import messif.objects.LocalAbstractObject; import messif.objects.LocalAbstractObject;
import java.io.Serializable; import java.io.Serializable;
...@@ -9,7 +8,6 @@ import java.util.Collection; ...@@ -9,7 +8,6 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
public class InternalNode extends Node implements Serializable { public class InternalNode extends Node implements Serializable {
...@@ -20,7 +18,7 @@ public class InternalNode extends Node implements Serializable { ...@@ -20,7 +18,7 @@ public class InternalNode extends Node implements Serializable {
private List<Node> children; private List<Node> children;
InternalNode(Stream<LocalAbstractObject> objects) { InternalNode(List<LocalAbstractObject> objects) {
super(objects); super(objects);
children = new ArrayList<>(); children = new ArrayList<>();
} }
...@@ -51,4 +49,12 @@ public class InternalNode extends Node implements Serializable { ...@@ -51,4 +49,12 @@ public class InternalNode extends Node implements Serializable {
.flatMap(Collection::stream) .flatMap(Collection::stream)
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
public boolean contains(LocalAbstractObject object) {
for (Node child : children)
if (child.contains(object))
return true;
return false;
}
} }
...@@ -45,4 +45,12 @@ public class LeafNode extends Node implements Serializable { ...@@ -45,4 +45,12 @@ public class LeafNode extends Node implements Serializable {
return objects; return objects;
} }
public boolean contains(LocalAbstractObject object) {
for (AbstractObjectIterator<LocalAbstractObject> it = bucket.getAllObjects(); it.hasNext(); )
if (object == it.next())
return true;
return false;
}
} }
...@@ -8,7 +8,6 @@ import java.io.Serializable; ...@@ -8,7 +8,6 @@ import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
public abstract class Node implements Serializable { public abstract class Node implements Serializable {
...@@ -29,12 +28,10 @@ public abstract class Node implements Serializable { ...@@ -29,12 +28,10 @@ public abstract class Node implements Serializable {
this(new HullOptimizedRepresentationV3(objects)); this(new HullOptimizedRepresentationV3(objects));
} }
Node(Stream<LocalAbstractObject> objects) {
this(new HullOptimizedRepresentationV3(objects.collect(Collectors.toList())));
}
public static InternalNode createParent(List<Node> nodes) { public static InternalNode createParent(List<Node> nodes) {
return new InternalNode(nodes.stream().flatMap(node -> node.getObjects().stream())); return new InternalNode(nodes.stream()
.flatMap(node -> node.getObjects().stream())
.collect(Collectors.toList()));
} }
public float getDistance(LocalAbstractObject object) { public float getDistance(LocalAbstractObject object) {
...@@ -51,10 +48,6 @@ public abstract class Node implements Serializable { ...@@ -51,10 +48,6 @@ public abstract class Node implements Serializable {
return (this instanceof LeafNode); return (this instanceof LeafNode);
} }
public boolean contains(LocalAbstractObject object) {
return hull.getObjects().contains(object);
}
public void setParent(Node parent) { public void setParent(Node parent) {
this.parent = parent; this.parent = parent;
} }
...@@ -69,8 +62,11 @@ public abstract class Node implements Serializable { ...@@ -69,8 +62,11 @@ public abstract class Node implements Serializable {
} }
public abstract void addObject(LocalAbstractObject object) throws BucketStorageException; public abstract void addObject(LocalAbstractObject object) throws BucketStorageException;
public abstract List<LocalAbstractObject> getObjects(); public abstract List<LocalAbstractObject> getObjects();
public abstract boolean contains(LocalAbstractObject object);
protected void rebuildHull(LocalAbstractObject object) { protected void rebuildHull(LocalAbstractObject object) {
List<LocalAbstractObject> objects = new ArrayList<>(getObjects()); List<LocalAbstractObject> objects = new ArrayList<>(getObjects());
objects.add(object); objects.add(object);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment