Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Commit 4b57845

Browse files
committed
重构
1 parent 0a6278b commit 4b57845

File tree

6 files changed

+366
-394
lines changed

6 files changed

+366
-394
lines changed

src/main/java/com/zhazhapan/util/ArrayUtils.java

Lines changed: 201 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,206 @@ public class ArrayUtils {
1212

1313
private ArrayUtils() {}
1414

15+
/**
16+
* 合并多个Short数组
17+
*
18+
* @param array 数组
19+
* @param arrays 数组
20+
*
21+
* @return 数组
22+
*/
23+
public static short[] concatArrays(short[] array, short[]... arrays) {
24+
short[] res = array;
25+
for (short[] ele : arrays) {
26+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
27+
}
28+
return res;
29+
}
30+
31+
/**
32+
* 合并多个Long数组
33+
*
34+
* @param array 数组
35+
* @param arrays 数组
36+
*
37+
* @return 数组
38+
*/
39+
public static long[] concatArrays(long[] array, long[]... arrays) {
40+
long[] res = array;
41+
for (long[] ele : arrays) {
42+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
43+
}
44+
return res;
45+
}
46+
47+
/**
48+
* 合并多个Float数组
49+
*
50+
* @param array 数组
51+
* @param arrays 数组
52+
*
53+
* @return 数组
54+
*/
55+
public static float[] concatArrays(float[] array, float[]... arrays) {
56+
float[] res = array;
57+
for (float[] ele : arrays) {
58+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
59+
}
60+
return res;
61+
}
62+
63+
/**
64+
* 合并多个Double数组
65+
*
66+
* @param array 数组
67+
* @param arrays 数组
68+
*
69+
* @return 数组
70+
*/
71+
public static double[] concatArrays(double[] array, double[]... arrays) {
72+
double[] res = array;
73+
for (double[] ele : arrays) {
74+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
75+
}
76+
return res;
77+
}
78+
79+
/**
80+
* 合并多个Character数组
81+
*
82+
* @param array 数组
83+
* @param arrays 数组
84+
*
85+
* @return 数组
86+
*/
87+
public static char[] concatArrays(char[] array, char[]... arrays) {
88+
char[] res = array;
89+
for (char[] ele : arrays) {
90+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
91+
}
92+
return res;
93+
}
94+
95+
/**
96+
* 合并多个Byte数组
97+
*
98+
* @param array 数组
99+
* @param arrays 数组
100+
*
101+
* @return 数组
102+
*/
103+
public static byte[] concatArrays(byte[] array, byte[]... arrays) {
104+
byte[] res = array;
105+
for (byte[] ele : arrays) {
106+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
107+
}
108+
return res;
109+
}
110+
111+
/**
112+
* 合并多个Boolean数组
113+
*
114+
* @param array 数组
115+
* @param arrays 数组
116+
*
117+
* @return 数组
118+
*/
119+
public static boolean[] concatArrays(boolean[] array, boolean[]... arrays) {
120+
boolean[] res = array;
121+
for (boolean[] ele : arrays) {
122+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
123+
}
124+
return res;
125+
}
126+
127+
/**
128+
* 合并多个String数组
129+
*
130+
* @param array 数组
131+
* @param arrays 数组
132+
*
133+
* @return 数组
134+
*/
135+
public static String[] concatArrays(String[] array, String[]... arrays) {
136+
String[] res = array;
137+
for (String[] ele : arrays) {
138+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
139+
}
140+
return res;
141+
}
142+
143+
/**
144+
* 合并多个Integer数组
145+
*
146+
* @param array 数组
147+
* @param arrays 数组
148+
*
149+
* @return 数组
150+
*/
151+
public static int[] concatArrays(int[] array, int[]... arrays) {
152+
int[] res = array;
153+
for (int[] ele : arrays) {
154+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
155+
}
156+
return res;
157+
}
158+
159+
/**
160+
* 合并多个T数组
161+
*
162+
* @param array 数组
163+
* @param arrays 数组
164+
* @param <T> T类型
165+
*
166+
* @return 数组
167+
*/
168+
@SafeVarargs
169+
public static <T> T[] concatArrays(T[] array, T[]... arrays) {
170+
T[] res = array;
171+
for (T[] ele : arrays) {
172+
res = org.apache.commons.lang3.ArrayUtils.addAll(res, ele);
173+
}
174+
return res;
175+
}
176+
177+
178+
/**
179+
* 合并两个升序数组
180+
*
181+
* @param nums1 数组
182+
* @param nums2 数组
183+
*
184+
* @return 数组
185+
*/
186+
public static int[] mergeSortedArrays(int[] nums1, int[] nums2) {
187+
return mergeSortedArrays(nums1, nums2, false);
188+
}
189+
190+
/**
191+
* 将两个有序数组(同序)合并成一个有序数组
192+
*
193+
* @param nums1 数组
194+
* @param nums2 数组
195+
* @param desc 是否为降序
196+
*
197+
* @return 数组
198+
*/
199+
public static int[] mergeSortedArrays(int[] nums1, int[] nums2, boolean desc) {
200+
int len = nums1.length + nums2.length;
201+
int[] nums = new int[len];
202+
int m = 0;
203+
int n = 0;
204+
for (int i = 0; i < len; i++) {
205+
boolean inNums1 = n == nums2.length || (m != nums1.length && ((nums1[m] < nums2[n]) ^ desc));
206+
if (inNums1) {
207+
nums[i] = nums1[m++];
208+
} else {
209+
nums[i] = nums2[n++];
210+
}
211+
}
212+
return nums;
213+
}
214+
15215
/**
16216
* 去重
17217
*
@@ -180,9 +380,7 @@ private static void mergeSort(int[] arrays, int low, int mid, int high) {
180380
while (j <= high) {
181381
temp[k++] = arrays[j++];
182382
}
183-
for (int k2 = 0; k2 < temp.length; k2++) {
184-
arrays[k2 + low] = temp[k2];
185-
}
383+
System.arraycopy(temp, ValueConsts.ZERO_INT, arrays, low, temp.length);
186384
}
187385

188386
/**
Lines changed: 71 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,71 @@
1-
/**
2-
*
3-
*/
4-
package com.zhazhapan.util;
5-
6-
/**
7-
* @author pantao
8-
*/
9-
public class CryptUtil {
10-
11-
private static final int TEN = 10;
12-
13-
private static final int HUNDRED = 100;
14-
15-
private static final int THOUSAND = 1000;
16-
17-
private CryptUtil() {}
18-
19-
/**
20-
* 通过获取一个KEY数组
21-
*
22-
* @param key 可自定义一个INT型数值
23-
*
24-
* @return 长度为3的KEY数组
25-
*/
26-
public static int[] getKeys(int key) {
27-
int[] keys = {0, 1, 1};
28-
if (key > 0) {
29-
// 自定义算Key
30-
if (key < TEN) {
31-
keys[0] = key;
32-
keys[1] = key - key / 2;
33-
keys[2] = Math.abs(keys[1] - key % keys[1]);
34-
} else if (key < HUNDRED) {
35-
keys[0] = key % 10;
36-
keys[1] = Math.abs(key / 10 - keys[0]) % 9 + 1;
37-
keys[2] = keys[0] * keys[1] / (keys[0] + keys[1]) % 10;
38-
} else if (key < THOUSAND) {
39-
int middle = key % 100 / 10;
40-
keys[0] = key % 10;
41-
keys[1] = key / 100;
42-
keys[2] = ((int) (Math.pow(keys[1], keys[0]) / middle) % 9 + 1);
43-
} else {
44-
int length = String.valueOf(key).length();
45-
keys[0] = key % 10;
46-
keys[1] = key / (int) Math.pow(10, length - 1);
47-
length = (keys[0] + keys[1] + keys[0] * keys[1]) % (length - 2) + 2;
48-
keys[2] = (int) (key % Math.pow(10, length) / Math.pow(10, length - 1));
49-
}
50-
keys[2] = keys[2] % 8 + 2;
51-
}
52-
return keys;
53-
}
54-
55-
/**
56-
* 通过字符串获取KEY
57-
*
58-
* @param string 可随机一个字符串
59-
*
60-
* @return INT型KEY
61-
*/
62-
public static int stringToKey(String string) {
63-
string = Checker.checkNull(string);
64-
int length = string.length();
65-
if (length > THOUSAND) {
66-
return length;
67-
}
68-
int key = 0;
69-
for (int i = 0; i < length; i++) {
70-
key += (int) string.charAt(i);
71-
}
72-
return key;
73-
}
74-
}
1+
package com.zhazhapan.util;
2+
3+
/**
4+
* @author pantao
5+
*/
6+
public class CryptUtils {
7+
8+
private static final int TEN = 10;
9+
10+
private static final int HUNDRED = 100;
11+
12+
private static final int THOUSAND = 1000;
13+
14+
private CryptUtils() {}
15+
16+
/**
17+
* 通过获取一个KEY数组
18+
*
19+
* @param key 可自定义一个INT型数值
20+
*
21+
* @return 长度为3的KEY数组
22+
*/
23+
public static int[] getKeys(int key) {
24+
int[] keys = {0, 1, 1};
25+
if (key > 0) {
26+
// 自定义算Key
27+
if (key < TEN) {
28+
keys[0] = key;
29+
keys[1] = key - key / 2;
30+
keys[2] = Math.abs(keys[1] - key % keys[1]);
31+
} else if (key < HUNDRED) {
32+
keys[0] = key % 10;
33+
keys[1] = Math.abs(key / 10 - keys[0]) % 9 + 1;
34+
keys[2] = keys[0] * keys[1] / (keys[0] + keys[1]) % 10;
35+
} else if (key < THOUSAND) {
36+
int middle = key % 100 / 10;
37+
keys[0] = key % 10;
38+
keys[1] = key / 100;
39+
keys[2] = ((int) (Math.pow(keys[1], keys[0]) / middle) % 9 + 1);
40+
} else {
41+
int length = String.valueOf(key).length();
42+
keys[0] = key % 10;
43+
keys[1] = key / (int) Math.pow(10, length - 1);
44+
length = (keys[0] + keys[1] + keys[0] * keys[1]) % (length - 2) + 2;
45+
keys[2] = (int) (key % Math.pow(10, length) / Math.pow(10, length - 1));
46+
}
47+
keys[2] = keys[2] % 8 + 2;
48+
}
49+
return keys;
50+
}
51+
52+
/**
53+
* 通过字符串获取KEY
54+
*
55+
* @param string 可随机一个字符串
56+
*
57+
* @return INT型KEY
58+
*/
59+
public static int stringToKey(String string) {
60+
string = Checker.checkNull(string);
61+
int length = string.length();
62+
if (length > THOUSAND) {
63+
return length;
64+
}
65+
int key = 0;
66+
for (int i = 0; i < length; i++) {
67+
key += (int) string.charAt(i);
68+
}
69+
return key;
70+
}
71+
}

0 commit comments

Comments
 (0)