Decimal vs Hex vs Base 36

package test;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.math.BigInteger;

public class Test2 {
	
	public static void main(String args[]) {
		System.out.print("\nD\tB36\tHex");
		System.out.print("\n-------------------------");
		for( int i=0; i < 1296; i++ ) {
			// 1. Hex String
			Integer intObj = new Integer(i);
			String hexStr = String.format("%02X", intObj & 0xFF);
			// 2. Base 36 String
			String base36StrRaw = Integer.toString(i, 36);			
			String base36Str = getBase36Str(base36StrRaw);
			// 3. Decimal converted back to Base 36
			String longStr = Long.valueOf(base36Str, 36).toString();
			
//			if(isAllDigit(base36Str)) {
//				continue;
//			}
			System.out.print("\n" + i + "\t" + base36Str + "\t" + hexStr);
		}
		System.out.print("\n-------------------------");
	}
	
	private static String getBase36Str(String base36StrRaw) {
		if (base36StrRaw.length() == 1) {
			base36StrRaw = "0" + base36StrRaw;
		}
		return base36StrRaw.toUpperCase();
	}
	
    public static boolean isAllDigit(String input) {
        if (input == null || input.equals("")) {
            return false;
        } else {
            input = input.trim();
            int size = input.length();
            int count = 0;
            for (int i = 0; i < size; i++) {
                if (isDigit(input.charAt(i))) {
                	count++;
                }
            }
            if(count == size) {
            	return true;
            }            
        }
        return false;
    }
	
    public static boolean isNumber(String input) {
        if (input == null || input.equals("")) {
            return false;
        } else {
            input = input.trim();
            for (int i = 0; i < input.length(); i++) {
                if (!isDigit(input.charAt(i))) {
                    return false;
                }
            }
        }
        return true;
    }

    private static boolean isDigit(char c) {
        if (c != '0' && c != '1' && c != '2' && c != '3' && c != '4' && c != '5' && c != '6' && c != '7' && c != '8' && c != '9') {
            return false;
        } else {
            return true;
        }
    }
}

Output:

D	B36	Hex
-------------------------
0	00	00
1	01	01
2	02	02
3	03	03
4	04	04
5	05	05
6	06	06
7	07	07
8	08	08
9	09	09
10	0A	0A
11	0B	0B
12	0C	0C
13	0D	0D
14	0E	0E
15	0F	0F
16	0G	10
17	0H	11
18	0I	12
19	0J	13
20	0K	14
21	0L	15
22	0M	16
23	0N	17
24	0O	18
25	0P	19
26	0Q	1A
27	0R	1B
28	0S	1C
29	0T	1D
30	0U	1E
31	0V	1F
32	0W	20
33	0X	21
34	0Y	22
35	0Z	23
36	10	24
37	11	25
38	12	26
39	13	27
40	14	28
41	15	29
42	16	2A
43	17	2B
44	18	2C
45	19	2D
46	1A	2E
47	1B	2F
48	1C	30
49	1D	31
50	1E	32
51	1F	33
52	1G	34
53	1H	35
54	1I	36
55	1J	37
56	1K	38
57	1L	39
58	1M	3A
59	1N	3B
60	1O	3C
61	1P	3D
62	1Q	3E
63	1R	3F
64	1S	40
65	1T	41
66	1U	42
67	1V	43
68	1W	44
69	1X	45
70	1Y	46
71	1Z	47
72	20	48
73	21	49
74	22	4A
75	23	4B
76	24	4C
77	25	4D
78	26	4E
79	27	4F
80	28	50
81	29	51
82	2A	52
83	2B	53
84	2C	54
85	2D	55
86	2E	56
87	2F	57
88	2G	58
89	2H	59
90	2I	5A
91	2J	5B
92	2K	5C
93	2L	5D
94	2M	5E
95	2N	5F
96	2O	60
97	2P	61
98	2Q	62
99	2R	63
100	2S	64
101	2T	65
102	2U	66
103	2V	67
104	2W	68
105	2X	69
106	2Y	6A
107	2Z	6B
108	30	6C
109	31	6D
110	32	6E
111	33	6F
112	34	70
113	35	71
114	36	72
115	37	73
116	38	74
117	39	75
118	3A	76
119	3B	77
120	3C	78
121	3D	79
122	3E	7A
123	3F	7B
124	3G	7C
125	3H	7D
126	3I	7E
127	3J	7F
128	3K	80
129	3L	81
130	3M	82
131	3N	83
132	3O	84
133	3P	85
134	3Q	86
135	3R	87
136	3S	88
137	3T	89
138	3U	8A
139	3V	8B
140	3W	8C
141	3X	8D
142	3Y	8E
143	3Z	8F
144	40	90
145	41	91
146	42	92
147	43	93
148	44	94
149	45	95
150	46	96
151	47	97
152	48	98
153	49	99
154	4A	9A
155	4B	9B
156	4C	9C
157	4D	9D
158	4E	9E
159	4F	9F
160	4G	A0
161	4H	A1
162	4I	A2
163	4J	A3
164	4K	A4
165	4L	A5
166	4M	A6
167	4N	A7
168	4O	A8
169	4P	A9
170	4Q	AA
171	4R	AB
172	4S	AC
173	4T	AD
174	4U	AE
175	4V	AF
176	4W	B0
177	4X	B1
178	4Y	B2
179	4Z	B3
180	50	B4
181	51	B5
182	52	B6
183	53	B7
184	54	B8
185	55	B9
186	56	BA
187	57	BB
188	58	BC
189	59	BD
190	5A	BE
191	5B	BF
192	5C	C0
193	5D	C1
194	5E	C2
195	5F	C3
196	5G	C4
197	5H	C5
198	5I	C6
199	5J	C7
200	5K	C8
201	5L	C9
202	5M	CA
203	5N	CB
204	5O	CC
205	5P	CD
206	5Q	CE
207	5R	CF
208	5S	D0
209	5T	D1
210	5U	D2
211	5V	D3
212	5W	D4
213	5X	D5
214	5Y	D6
215	5Z	D7
216	60	D8
217	61	D9
218	62	DA
219	63	DB
220	64	DC
221	65	DD
222	66	DE
223	67	DF
224	68	E0
225	69	E1
226	6A	E2
227	6B	E3
228	6C	E4
229	6D	E5
230	6E	E6
231	6F	E7
232	6G	E8
233	6H	E9
234	6I	EA
235	6J	EB
236	6K	EC
237	6L	ED
238	6M	EE
239	6N	EF
240	6O	F0
241	6P	F1
242	6Q	F2
243	6R	F3
244	6S	F4
245	6T	F5
246	6U	F6
247	6V	F7
248	6W	F8
249	6X	F9
250	6Y	FA
251	6Z	FB
252	70	FC
253	71	FD
254	72	FE
255	73	FF
256	74	00
257	75	01
258	76	02
259	77	03
260	78	04
261	79	05
262	7A	06
263	7B	07
264	7C	08
265	7D	09
266	7E	0A
267	7F	0B
268	7G	0C
269	7H	0D
270	7I	0E
271	7J	0F
272	7K	10
273	7L	11
274	7M	12
275	7N	13
276	7O	14
277	7P	15
278	7Q	16
279	7R	17
280	7S	18
281	7T	19
282	7U	1A
283	7V	1B
284	7W	1C
285	7X	1D
286	7Y	1E
287	7Z	1F
288	80	20
289	81	21
290	82	22
291	83	23
292	84	24
293	85	25
294	86	26
295	87	27
296	88	28
297	89	29
298	8A	2A
299	8B	2B
300	8C	2C
...................
998	RQ	E6
999	RR	E7
1000	RS	E8
1001	RT	E9
1002	RU	EA
1003	RV	EB
1004	RW	EC
1005	RX	ED
1006	RY	EE
1007	RZ	EF
1008	S0	F0
1009	S1	F1
1010	S2	F2
1011	S3	F3
1012	S4	F4
1013	S5	F5
1014	S6	F6
1015	S7	F7
1016	S8	F8
1017	S9	F9
1018	SA	FA
1019	SB	FB
1020	SC	FC
1021	SD	FD
1022	SE	FE
1023	SF	FF
1024	SG	00
1025	SH	01
1026	SI	02
1027	SJ	03
1028	SK	04
1029	SL	05
1030	SM	06
1031	SN	07
1032	SO	08
1033	SP	09
1034	SQ	0A
1035	SR	0B
1036	SS	0C
1037	ST	0D
1038	SU	0E
1039	SV	0F
1040	SW	10
1041	SX	11
1042	SY	12
1043	SZ	13
1044	T0	14
1045	T1	15
1046	T2	16
1047	T3	17
1048	T4	18
1049	T5	19
1050	T6	1A
1051	T7	1B
1052	T8	1C
1053	T9	1D
1054	TA	1E
1055	TB	1F
1056	TC	20
1057	TD	21
1058	TE	22
1059	TF	23
1060	TG	24
1061	TH	25
1062	TI	26
1063	TJ	27
1064	TK	28
1065	TL	29
1066	TM	2A
1067	TN	2B
1068	TO	2C
1069	TP	2D
1070	TQ	2E
1071	TR	2F
1072	TS	30
1073	TT	31
1074	TU	32
1075	TV	33
1076	TW	34
1077	TX	35
1078	TY	36
1079	TZ	37
1080	U0	38
1081	U1	39
1082	U2	3A
1083	U3	3B
1084	U4	3C
1085	U5	3D
1086	U6	3E
1087	U7	3F
1088	U8	40
1089	U9	41
1090	UA	42
1091	UB	43
1092	UC	44
1093	UD	45
1094	UE	46
1095	UF	47
1096	UG	48
1097	UH	49
1098	UI	4A
1099	UJ	4B
1100	UK	4C
1101	UL	4D
1102	UM	4E
1103	UN	4F
1104	UO	50
1105	UP	51
1106	UQ	52
1107	UR	53
1108	US	54
1109	UT	55
1110	UU	56
1111	UV	57
1112	UW	58
1113	UX	59
1114	UY	5A
1115	UZ	5B
1116	V0	5C
1117	V1	5D
1118	V2	5E
1119	V3	5F
1120	V4	60
1121	V5	61
1122	V6	62
1123	V7	63
1124	V8	64
1125	V9	65
1126	VA	66
1127	VB	67
1128	VC	68
1129	VD	69
1130	VE	6A
1131	VF	6B
1132	VG	6C
1133	VH	6D
1134	VI	6E
1135	VJ	6F
1136	VK	70
1137	VL	71
1138	VM	72
1139	VN	73
1140	VO	74
1141	VP	75
1142	VQ	76
1143	VR	77
1144	VS	78
1145	VT	79
1146	VU	7A
1147	VV	7B
1148	VW	7C
1149	VX	7D
1150	VY	7E
1151	VZ	7F
1152	W0	80
1153	W1	81
1154	W2	82
1155	W3	83
1156	W4	84
1157	W5	85
1158	W6	86
1159	W7	87
1160	W8	88
1161	W9	89
1162	WA	8A
1163	WB	8B
1164	WC	8C
1165	WD	8D
1166	WE	8E
1167	WF	8F
1168	WG	90
1169	WH	91
1170	WI	92
1171	WJ	93
1172	WK	94
1173	WL	95
1174	WM	96
1175	WN	97
1176	WO	98
1177	WP	99
1178	WQ	9A
1179	WR	9B
1180	WS	9C
1181	WT	9D
1182	WU	9E
1183	WV	9F
1184	WW	A0
1185	WX	A1
1186	WY	A2
1187	WZ	A3
1188	X0	A4
1189	X1	A5
1190	X2	A6
1191	X3	A7
1192	X4	A8
1193	X5	A9
1194	X6	AA
1195	X7	AB
1196	X8	AC
1197	X9	AD
1198	XA	AE
1199	XB	AF
1200	XC	B0
1201	XD	B1
1202	XE	B2
1203	XF	B3
1204	XG	B4
1205	XH	B5
1206	XI	B6
1207	XJ	B7
1208	XK	B8
1209	XL	B9
1210	XM	BA
1211	XN	BB
1212	XO	BC
1213	XP	BD
1214	XQ	BE
1215	XR	BF
1216	XS	C0
1217	XT	C1
1218	XU	C2
1219	XV	C3
1220	XW	C4
1221	XX	C5
1222	XY	C6
1223	XZ	C7
1224	Y0	C8
1225	Y1	C9
1226	Y2	CA
1227	Y3	CB
1228	Y4	CC
1229	Y5	CD
1230	Y6	CE
1231	Y7	CF
1232	Y8	D0
1233	Y9	D1
1234	YA	D2
1235	YB	D3
1236	YC	D4
1237	YD	D5
1238	YE	D6
1239	YF	D7
1240	YG	D8
1241	YH	D9
1242	YI	DA
1243	YJ	DB
1244	YK	DC
1245	YL	DD
1246	YM	DE
1247	YN	DF
1248	YO	E0
1249	YP	E1
1250	YQ	E2
1251	YR	E3
1252	YS	E4
1253	YT	E5
1254	YU	E6
1255	YV	E7
1256	YW	E8
1257	YX	E9
1258	YY	EA
1259	YZ	EB
1260	Z0	EC
1261	Z1	ED
1262	Z2	EE
1263	Z3	EF
1264	Z4	F0
1265	Z5	F1
1266	Z6	F2
1267	Z7	F3
1268	Z8	F4
1269	Z9	F5
1270	ZA	F6
1271	ZB	F7
1272	ZC	F8
1273	ZD	F9
1274	ZE	FA
1275	ZF	FB
1276	ZG	FC
1277	ZH	FD
1278	ZI	FE
1279	ZJ	FF
1280	ZK	00
1281	ZL	01
1282	ZM	02
1283	ZN	03
1284	ZO	04
1285	ZP	05
1286	ZQ	06
1287	ZR	07
1288	ZS	08
1289	ZT	09
1290	ZU	0A
1291	ZV	0B
1292	ZW	0C
1293	ZX	0D
1294	ZY	0E
1295	ZZ	0F

Hash Set vs Array List

title-img-nlogn-1
Recalling a Big-O notation in (CS) Computer Science major course I have taken in College:

O(n)O(1)O(log n)O(n log n)O(n^2)O(n^3)
111111
211248
41281664
8132464512
1614642654096
10241101024010485761073741824

In Biz apps, you need to use List object all the time. And often has performance issue. It’s better to use some other data structure, such as Map object because HashSet is much faster compared to ArrayList:
getcontainsaddremove
ArrayListO(1)O(n)O(1)O(n)
HashSetN/AO(1)O(1)O(1)

Note: HashSet does not provide “get” method, but as long as “contains” method is available, we know what element we need

Here is how to work on:
First, converting ArrayList to HashSet

private Set<String> convertToHashSet(List<Map<String, Object>> listToDelete) {
	Set<String> set = new HashSet<String>();
	for (Map<String, Object> obj : listToDelete) {
		set.add(new String("test"));
	}
	return set;
}

Or just simply set a list as constructor’s parameter:

private Set<String> convertToHashSetDirectory(List<String> list) {
	return new HashSet<String>(list);
}

“contains” with for loop version:

private void hashSetDemoFor(Set<String> setOfMdseOnScreen, Set<String> setOfMdseAcctTo) {
	Map<String, Long> resultMap = new HashMap<String, Long>();
	for (String mdseAcctTo : setOfMdseAcctTo) {
		if (setOfMdseOnScreen.contains(mdseAcctTo)) {
			// Do something
			continue;
		}
	}
}

“contains” with while loop version:

private void hashSetDemoWhile(Set<String> setOfMdseOnScreen, Set<String> setOfMdseAcctTo) {
	Iterator<String> itr = setOfMdseOnScreen.iterator();
	while (itr.hasNext()) {
		String mdseOnScreen = itr.next();
		if (setOfMdseAcctTo.contains(mdseOnScreen)) {
			// Do something
			continue;
		}
	}
}