@@ -13,108 +13,25 @@ private StringUtils() {
13
13
}
14
14
15
15
/**
16
- * 以指定的分隔符来进行字符串元素连接
17
- * <p>
18
- * 例如有字符串数组array和连接符为逗号(,)
19
- * <code>
20
- * String[] array = new String[] { "hello", "world", "qiniu", "cloud","storage" };
21
- * </code>
22
- * 那么得到的结果是:
23
- * <code>
24
- * hello,world,qiniu,cloud,storage
25
- * </code>
26
- * </p>
27
- *
28
- * @param array 需要连接的字符串数组
29
- * @param sep 元素连接之间的分隔符
30
- * @return 连接好的新字符串
16
+ * @see #join(Object[] array, String sep, String prefix)
31
17
*/
32
- public static String join (String [] array , String sep ) {
18
+ public static String join (Object [] array , String sep ) {
33
19
return join (array , sep , null );
34
20
}
35
21
36
22
/**
37
- * 以指定的分隔符来进行字符串元素连接
38
- * <p>
39
- * 例如有字符串数组array和连接符为逗号(,)
40
- * <code>
41
- * String[] array = new String[] { "hello", "world", "qiniu", "cloud","storage" };
42
- * </code>
43
- * 那么得到的结果是:
44
- * <code>
45
- * hello,world,qiniu,cloud,storage
46
- * </code>
47
- * </p>
48
- *
49
- * @param array 需要连接的字符串数组
50
- * @param sep 元素连接之间的分隔符
51
- * @param prefix 前缀字符串
52
- * @return 连接好的新字符串
23
+ * @see #join(Object[] array, String sep, String prefix)
53
24
*/
54
- public static String join (String [] array , String sep , String prefix ) {
55
- if (array == null ) {
56
- return null ;
57
- }
58
-
59
- int arraySize = array .length ;
60
- int sepSize = 0 ;
61
- if (sep != null && !sep .equals ("" )) {
62
- sepSize = sep .length ();
63
- }
64
-
65
- int bufSize = (arraySize == 0 ? 0 : ((array [0 ] == null ? 16 : array [0 ].length ()) + sepSize ) * arraySize );
66
- StringBuilder buf = new StringBuilder (bufSize );
67
- if (prefix != null ) {
68
- buf .append (prefix );
69
- }
70
- for (int i = 0 ; i < arraySize ; i ++) {
71
- if (i > 0 ) {
72
- buf .append (sep );
73
- }
74
- if (array [i ] != null ) {
75
- buf .append (array [i ]);
76
- }
77
- }
78
- return buf .toString ();
25
+ public static String join (Collection list , String sep ) {
26
+ return join (list , sep , null );
79
27
}
80
28
81
29
/**
82
- * 以指定的分隔符来进行字符串列表连接
83
- *
84
- * @param list 需要连接的字符串列表
85
- * @param sep 元素连接之间的分隔符
86
- * @param prefix 前缀字符串
87
- * @return 连接好的新字符串
30
+ * @see #join(Object[] array, String sep, String prefix)
88
31
*/
89
- public static String join (Collection <String > list , String sep , String prefix ) {
90
- if (list == null ) {
91
- return null ;
92
- }
93
- int arraySize = list .size ();
94
- if (arraySize == 0 ) {
95
- return prefix ;
96
- }
97
- int sepSize = 0 ;
98
- if (sep != null && !sep .equals ("" )) {
99
- sepSize = sep .length ();
100
- }
101
- String first = list .iterator ().next ();
102
- int bufSize = ((first == null ? 16 : first .length ()) + sepSize ) * arraySize ;
103
- StringBuilder buf = new StringBuilder (bufSize );
104
- if (prefix != null ) {
105
- buf .append (prefix );
106
- }
107
- int count = 0 ;
108
- for (String it : list ) {
109
- count ++;
110
- if (it != null ) {
111
- buf .append (it );
112
- if (count < arraySize ) {
113
- buf .append (sep );
114
- }
115
- }
116
- }
117
- return buf .toString ();
32
+ public static String join (Collection list , String sep , String prefix ) {
33
+ Object [] array = list == null ? null : list .toArray ();
34
+ return join (array , sep , prefix );
118
35
}
119
36
120
37
/**
@@ -137,31 +54,29 @@ public static String join(Collection<String> list, String sep, String prefix) {
137
54
*/
138
55
public static String join (Object [] array , String sep , String prefix ) {
139
56
if (array == null ) {
140
- return null ;
57
+ return "" ;
141
58
}
142
59
143
60
int arraySize = array .length ;
144
61
145
62
if (arraySize == 0 ) {
146
- return prefix ;
63
+ return "" ;
147
64
}
148
- int sepSize = 0 ;
149
- if (sep != null && ! sep . equals ( "" ) ) {
150
- sepSize = sep . length () ;
65
+
66
+ if (sep == null ) {
67
+ sep = "" ;
151
68
}
152
69
153
- int bufSize = ((array [0 ] == null ? 16 : array [0 ].toString ().length ()) + sepSize ) * arraySize ;
154
- StringBuilder buf = new StringBuilder (bufSize );
155
- if (prefix != null ) {
156
- buf .append (prefix );
70
+ if (prefix == null ) {
71
+ prefix = "" ;
157
72
}
73
+
74
+ StringBuilder buf = new StringBuilder (prefix );
158
75
for (int i = 0 ; i < arraySize ; i ++) {
159
76
if (i > 0 ) {
160
77
buf .append (sep );
161
78
}
162
- if (array [i ] != null ) {
163
- buf .append (array [i ]);
164
- }
79
+ buf .append (array [i ] == null ? "" : array [i ]);
165
80
}
166
81
return buf .toString ();
167
82
}
0 commit comments