@@ -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