From 659819a62fc66d7bfe1ae167309594f7d6478796 Mon Sep 17 00:00:00 2001 From: Fengchao Date: Mon, 22 May 2017 10:04:35 +0800 Subject: [PATCH] Improve the dot(). But it will change the original SparseBooleanVector to make is unuseful. --- .../java/proteomics/Types/SparseBooleanVector.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/proteomics/Types/SparseBooleanVector.java b/src/main/java/proteomics/Types/SparseBooleanVector.java index c558606..b8cf7ff 100644 --- a/src/main/java/proteomics/Types/SparseBooleanVector.java +++ b/src/main/java/proteomics/Types/SparseBooleanVector.java @@ -22,13 +22,11 @@ public void put(int idx) { return sparse_vector.size(); } - public double dot(SparseVector other) { + public double dot(SparseVector other) { // caution: it will change the original Sparse Boolean Vector. double output = 0; - Map other_vector = other.getVectorMap(); - Set intersectedKeys = new HashSet<>(sparse_vector); - intersectedKeys.retainAll(other_vector.keySet()); - for (int i : intersectedKeys) { - output += other_vector.get(i); + sparse_vector.retainAll(other.getIdxSet()); + for (int i : sparse_vector) { + output += other.get(i); } return output; }