You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2006/09/20 01:45:15 UTC

svn commit: r448015 - /jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java

Author: bayard
Date: Tue Sep 19 16:45:14 2006
New Revision: 448015

URL: http://svn.apache.org/viewvc?view=rev&rev=448015
Log:
Applied the optimisations to the join(Iterator, x) methods that Stepan Koltsov included in his patch for #LANG-266. 

Modified:
    jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java

Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java?view=diff&rev=448015&r1=448014&r2=448015
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java (original)
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java Tue Sep 19 16:45:14 2006
@@ -2635,19 +2635,33 @@
      * @since 2.0
      */
     public static String join(Iterator iterator, char separator) {
+
+        // handle null, zero and one elements before building a buffer
         if (iterator == null) {
             return null;
         }
+        if (!iterator.hasNext()) {
+            return EMPTY;
+        }
+        Object first = iterator.next();
+        if (!iterator.hasNext()) {
+            return ObjectUtils.toString(first);
+        }
+
+        // two or more elements
         StringBuffer buf = new StringBuffer(256); // Java default is 16, probably too small
+        if (first != null) {
+            buf.append(first);
+        }
+
         while (iterator.hasNext()) {
+            buf.append(separator);
             Object obj = iterator.next();
             if (obj != null) {
                 buf.append(obj);
             }
-            if (iterator.hasNext()) {
-                buf.append(separator);
-            }
         }
+
         return buf.toString();
     }
 
@@ -2665,17 +2679,32 @@
      * @return the joined String, <code>null</code> if null iterator input
      */
     public static String join(Iterator iterator, String separator) {
+
+        // handle null, zero and one elements before building a buffer
         if (iterator == null) {
             return null;
         }
+        if (!iterator.hasNext()) {
+            return EMPTY;
+        }
+        Object first = iterator.next();
+        if (!iterator.hasNext()) {
+            return ObjectUtils.toString(first);
+        }
+
+        // two or more elements
         StringBuffer buf = new StringBuffer(256); // Java default is 16, probably too small
+        if (first != null) {
+            buf.append(first);
+        }
+
         while (iterator.hasNext()) {
+            if (separator != null) {
+                buf.append(separator);
+            }
             Object obj = iterator.next();
             if (obj != null) {
                 buf.append(obj);
-            }
-            if ((separator != null) && iterator.hasNext()) {
-                buf.append(separator);
             }
         }
         return buf.toString();



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org