Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
package com.ces.common.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* 对象的一些判断操作的工具类。
*
*/
public class ObjectUtils{
/**
* List非空判断。 包含了null与empty的判断。
*
* @param list
* @return
*/
public static boolean isNotEmpty(List<?> list) {
return list != null && !list.isEmpty();
}
/**
* List为空判断。 包含了null与empty的判断。
*
* @param list
* @return
*/
public static boolean isEmpty(List<?> list) {
return list == null || list.isEmpty();
}
/**
* Map非空判断。 包含了null与empty的判断。
*
* @param map
* @return
*/
public static boolean isNotEmpty(Map<?, ?> map) {
return map != null && !map.isEmpty();
}
/**
* Map为空判断。 包含了null与empty的判断。
*
* @param map
* @return
*/
public static boolean isEmpty(Map<?, ?> map) {
return map == null || map.isEmpty();
}
/**
* Object[]非空判断。 包含了null与length的判断。
*
* @param objs
* @return
*/
public static boolean isNotEmpty(Object[] objs) {
return objs != null && objs.length != 0;
}
/**
* Object[]为空判断。 包含了null与length的判断。
*
* @param objs
* @return
*/
public static boolean isEmpty(Object[] objs) {
return objs == null || objs.length == 0;
}
/**
* 字符串非空判断。 包含了null和去除字符串首尾空格后的判断。
*
* @param str
* @return
*/
public static boolean isNotBlank(String str) {
return str != null && !"".equals(str.trim());
}
/**
* 字符串非空判断。 包含了null、去除字符串首尾空格后的空串和"null"的判断。
*
* @param str
* @return
*/
public static boolean isNotBlankAndStrNull(String str) {
if (str != null) {
str = str.trim();
return !"".equals(str) && !"null".equals(str);
}
return false;
}
/**
* 字符串空判断。 包含了null、去除字符串首尾空格后的空串和"null"的判断。
*
* @param str
* @return
*/
public static boolean isBlankAndStrNull(String str) {
if (str == null) {
return true;
} else {
str = str.trim();
return "".equals(str) || "null".equals(str);
}
}
/**
* 字符串为空判断。 包含了null和去除字符串首尾空格后的空串判断。
*
* @param str
* @return
*/
public static boolean isBlank(String str) {
return str == null || "".equals(str.trim());
}
/**
* 判断参数为0或0.0,包含参数为null的情况,返回也为true。
*
* @param num
* @return
*/
public static boolean isNullOrZero(Number num) {
return num == null || (num.longValue() == 0 && num.doubleValue() == 0);
}
/**
* 判断参数不为0、0.0和null。
*
* @param num
* @return
*/
public static boolean isNotNullOrZero(Number num) {
return num != null && (num.longValue() != 0 || num.doubleValue() != 0);
}
/**
* 判断obj是否为null,如果为null 返回空串,否则传入对象toString方法后的结果。
*
* @param obj
* @return
*/
public static String toString(Object obj) {
return obj == null ? "" : obj.toString();
}
/**
* 判断是否为正整数,且不等于0
*
* @param str
* @return
*/
public static boolean isPositiveNum(String str) {
if (ObjectUtils.isNotBlank(str) && !"0".equals(str)) {
Pattern pattern = Pattern.compile("[\\d]*$");
return pattern.matcher(str).matches();
}
return false;
}
/**
* 计算map初始化容量,用于优化map的速度和节约空间
*
* @param elemNum
* 需要存储的元素个数
* @return
*/
public static int calcMapInitCapacity(int elemNum) {
int n = elemNum - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return ((n < 0) ? 1 : n + 1);
}
/**
* 关闭流。
*
* @param closeable
*/
public static void closeQuietly(AutoCloseable closeable) {
try {
if (closeable != null) {
closeable.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 对象转换为byte数组。
*
* @param obj
* @return
*/
public static byte[] toByteArray(Object obj) {
byte[] bytes = null;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(obj);
bytes = bos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return bytes;
}
/**
* byte数组转换为对象。
*
* @param bytes
* @param clazz
* @param <T>
* @return
*/
public static <T> T toObject(byte[] bytes, Class<T> clazz) {
T obj = null;
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis)) {
obj = clazz.cast(ois.readObject());
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* 深拷贝对象。
*
* @param obj
* @param <T>
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T cloneObject(T obj) {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(obj);
try (ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis)) {
return (T)ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 合并多个list
*
* @param <T>
* @param lists
* @return
*/
@SafeVarargs
public static <T> List<T> mergeList(List<? extends T>... lists) {
List<T> list = new ArrayList<>();
for (List<? extends T> item : lists) {
if (item != null) {
list.addAll(item);
}
}
return list;
}
/**
* from hutool
*
* 合并多个数组
*
* @param <T>
* @param arrays
* @return
*/
@SuppressWarnings("unchecked")
@SafeVarargs
public static <T> T[] mergeArray(T[]... arrays) {
if (arrays.length == 1) {
return arrays[0];
}
int length = 0;
for (T[] array : arrays) {
if (null != array) {
length += array.length;
}
}
T[] result = (T[])Array.newInstance(arrays.getClass().getComponentType().getComponentType(), length);
length = 0;
for (T[] array : arrays) {
if (null != array) {
System.arraycopy(array, 0, result, length, array.length);
length += array.length;
}
}
return result;
}
/**
* 判断段文字在文本中出现的次数
*
* @param words
* 文字
* @param text
* 文本内容
* @return
*/
public static int keywordCount(String words, String text) {
if (ObjectUtils.isNotBlank(words) && ObjectUtils.isNotBlank(text)) {
int oriLength = text.length();
text = text.replace(words, "");
int newLength = text.length();
return (oriLength - newLength) / words.length();
}
return 0;
}
}