X Tutup
Skip to content

Commit 645ef4e

Browse files
authored
Merge branch 'TheAlgorithms:master' into master
2 parents 552f12d + 239b274 commit 645ef4e

19 files changed

+824
-7
lines changed

DIRECTORY.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
* thealgorithms
77
* audiofilters
88
* [IIRFilter](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/audiofilters/IIRFilter.java)
9+
* bloomfilter
10+
* [BloomFilter](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/bloomfilter/BloomFilter.java)
911
* backtracking
1012
* [Combination](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/Combination.java)
1113
* [FloodFill](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/backtracking/FloodFill.java)
@@ -84,6 +86,7 @@
8486
* [MaxHeap](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/heaps/MaxHeap.java)
8587
* [MinHeap](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/heaps/MinHeap.java)
8688
* [MinPriorityQueue](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/heaps/MinPriorityQueue.java)
89+
* [FibonacciHeap](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/heaps/FibonacciHeap.java)
8790
* lists
8891
* [CircleLinkedList](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/lists/CircleLinkedList.java)
8992
* [CountSinglyLinkedListRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/datastructures/lists/CountSinglyLinkedListRecursion.java)
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.thealgorithms.datastructures.bloomfilter;
2+
3+
4+
public class BloomFilter<T> {
5+
6+
private int numberOfHashFunctions;
7+
private int [] bitArray;
8+
private Hash<T>[] hashFunctions;
9+
10+
public BloomFilter(int numberOfHashFunctions, int n) {
11+
this.numberOfHashFunctions = numberOfHashFunctions;
12+
hashFunctions = new Hash[numberOfHashFunctions];
13+
bitArray = new int[n];
14+
insertHash();
15+
}
16+
17+
private void insertHash() {
18+
for (int i = 0; i < numberOfHashFunctions; i++) {
19+
hashFunctions[i] = new Hash(i);
20+
}
21+
}
22+
23+
public void insert(T key) {
24+
for (Hash<T> hash : hashFunctions){
25+
bitArray[hash.compute(key) % bitArray.length] = 1;
26+
}
27+
}
28+
29+
public boolean contains(T key) {
30+
for (Hash<T> hash : hashFunctions){
31+
if (bitArray[hash.compute(key) % bitArray.length] == 0){
32+
return false;
33+
}
34+
}
35+
return true;
36+
}
37+
38+
private class Hash<T> {
39+
40+
int index;
41+
42+
public Hash(int index){
43+
this.index = index;
44+
}
45+
46+
public int compute(T key){
47+
return index * asciiString(String.valueOf(key));
48+
}
49+
50+
private int asciiString(String word){
51+
int number = 0;
52+
for (int i=0;i<word.length();i++){
53+
number += word.charAt(i);
54+
}
55+
return number;
56+
}
57+
}
58+
59+
}

0 commit comments

Comments
 (0)
X Tutup