Skip to content

Commit 7f0ac86

Browse files
committed
refactored internal helper classes for hash tables
1 parent b94d18b commit 7f0ac86

File tree

1 file changed

+36
-96
lines changed

1 file changed

+36
-96
lines changed

src/org/cicirello/sequences/distance/KendallTauSequenceDistance.java

Lines changed: 36 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -812,13 +812,13 @@ static final class Node {
812812
}
813813
}
814814

815-
private static final class IntHT {
815+
static class BaseHT {
816+
private final int MAX_SIZE;
817+
protected final int mask;
818+
protected final int minSize;
816819

817-
private Node[] table;
818-
private static final int MAX_SIZE = 0x40000000;
819-
private int mask;
820-
821-
IntHT(int minSize) {
820+
BaseHT(int maxSize, int minSize) {
821+
MAX_SIZE = maxSize;
822822
if (minSize > MAX_SIZE) {
823823
minSize = MAX_SIZE;
824824
mask = minSize - 1;
@@ -832,6 +832,16 @@ private static final class IntHT {
832832
mask = minSize;
833833
minSize++;
834834
}
835+
this.minSize = minSize;
836+
}
837+
}
838+
839+
private static final class IntHT extends BaseHT {
840+
841+
private final Node[] table;
842+
843+
IntHT(int min) {
844+
super(0x40000000, min);
835845
table = new Node[minSize];
836846
}
837847

@@ -872,26 +882,12 @@ static final class Node {
872882
}
873883
}
874884

875-
private static final class LongHT {
885+
private static final class LongHT extends BaseHT {
876886

877-
private Node[] table;
878-
private static final int MAX_SIZE = 0x40000000;
879-
private int mask;
887+
private final Node[] table;
880888

881-
LongHT(int minSize) {
882-
if (minSize > MAX_SIZE) {
883-
minSize = MAX_SIZE;
884-
mask = minSize - 1;
885-
} else {
886-
minSize = minSize - 1;
887-
minSize = minSize | (minSize >> 1);
888-
minSize = minSize | (minSize >> 2);
889-
minSize = minSize | (minSize >> 4);
890-
minSize = minSize | (minSize >> 8);
891-
minSize = minSize | (minSize >> 16);
892-
mask = minSize;
893-
minSize++;
894-
}
889+
LongHT(int min) {
890+
super(0x40000000, min);
895891
table = new Node[minSize];
896892
}
897893

@@ -933,26 +929,12 @@ static final class Node {
933929
}
934930
}
935931

936-
private static final class ShortHT {
932+
private static final class ShortHT extends BaseHT {
937933

938-
private Node[] table;
939-
private static final int MAX_SIZE = 0x10000;
940-
private int mask;
934+
private final Node[] table;
941935

942-
ShortHT(int minSize) {
943-
if (minSize > MAX_SIZE) {
944-
minSize = MAX_SIZE;
945-
mask = minSize - 1;
946-
} else {
947-
minSize = minSize - 1;
948-
minSize = minSize | (minSize >> 1);
949-
minSize = minSize | (minSize >> 2);
950-
minSize = minSize | (minSize >> 4);
951-
minSize = minSize | (minSize >> 8);
952-
minSize = minSize | (minSize >> 16);
953-
mask = minSize;
954-
minSize++;
955-
}
936+
ShortHT(int min) {
937+
super(0x10000, min);
956938
table = new Node[minSize];
957939
}
958940

@@ -993,26 +975,12 @@ static final class Node {
993975
}
994976
}
995977

996-
private static final class CharHT {
978+
private static final class CharHT extends BaseHT {
997979

998-
private Node[] table;
999-
private static final int MAX_SIZE = 0x10000;
1000-
private int mask;
980+
private final Node[] table;
1001981

1002-
CharHT(int minSize) {
1003-
if (minSize > MAX_SIZE) {
1004-
minSize = MAX_SIZE;
1005-
mask = minSize - 1;
1006-
} else {
1007-
minSize = minSize - 1;
1008-
minSize = minSize | (minSize >> 1);
1009-
minSize = minSize | (minSize >> 2);
1010-
minSize = minSize | (minSize >> 4);
1011-
minSize = minSize | (minSize >> 8);
1012-
minSize = minSize | (minSize >> 16);
1013-
mask = minSize;
1014-
minSize++;
1015-
}
982+
CharHT(int min) {
983+
super(0x10000, min);
1016984
table = new Node[minSize];
1017985
}
1018986

@@ -1053,26 +1021,12 @@ static final class Node {
10531021
}
10541022
}
10551023

1056-
private static final class DoubleHT {
1024+
private static final class DoubleHT extends BaseHT {
10571025

1058-
private Node[] table;
1059-
private static final int MAX_SIZE = 0x40000000;
1060-
private int mask;
1026+
private final Node[] table;
10611027

1062-
DoubleHT(int minSize) {
1063-
if (minSize > MAX_SIZE) {
1064-
minSize = MAX_SIZE;
1065-
mask = minSize - 1;
1066-
} else {
1067-
minSize = minSize - 1;
1068-
minSize = minSize | (minSize >> 1);
1069-
minSize = minSize | (minSize >> 2);
1070-
minSize = minSize | (minSize >> 4);
1071-
minSize = minSize | (minSize >> 8);
1072-
minSize = minSize | (minSize >> 16);
1073-
mask = minSize;
1074-
minSize++;
1075-
}
1028+
DoubleHT(int min) {
1029+
super(0x40000000, min);
10761030
table = new Node[minSize];
10771031
}
10781032

@@ -1115,26 +1069,12 @@ static final class Node {
11151069
}
11161070
}
11171071

1118-
private static final class FloatHT {
1072+
private static final class FloatHT extends BaseHT {
11191073

1120-
private Node[] table;
1121-
private static final int MAX_SIZE = 0x40000000;
1122-
private int mask;
1074+
private final Node[] table;
11231075

1124-
FloatHT(int minSize) {
1125-
if (minSize > MAX_SIZE) {
1126-
minSize = MAX_SIZE;
1127-
mask = minSize - 1;
1128-
} else {
1129-
minSize = minSize - 1;
1130-
minSize = minSize | (minSize >> 1);
1131-
minSize = minSize | (minSize >> 2);
1132-
minSize = minSize | (minSize >> 4);
1133-
minSize = minSize | (minSize >> 8);
1134-
minSize = minSize | (minSize >> 16);
1135-
mask = minSize;
1136-
minSize++;
1137-
}
1076+
FloatHT(int min) {
1077+
super(0x40000000, min);
11381078
table = new Node[minSize];
11391079
}
11401080

0 commit comments

Comments
 (0)