[ 
https://issues.apache.org/jira/browse/LANG-736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary D. Gregory updated LANG-736:
---------------------------------

    Description: 
CharUtils static final array CHAR_STRING is not needed to compute 
CHAR_STRING_ARRAY.

This:

{code:java}
    private static final String CHAR_STRING = 
        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
        "\b\t\n\u000b\f\r\u000e\u000f" +
        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
        "\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f" +
        "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
        "\u0028\u0029\u002a\u002b\u002c\u002d\u002e\u002f" +
        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
        "\u0038\u0039\u003a\u003b\u003c\u003d\u003e\u003f" +
        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
        "\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f" +
        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
        "\u0058\u0059\u005a\u005b\\\u005d\u005e\u005f" +
        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
        "\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f" +
        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
        "\u0078\u0079\u007a\u007b\u007c\u007d\u007e\u007f";

// snip

        for (int i = 127; i >= 0; i--) {
            CHAR_STRING_ARRAY[i] = CHAR_STRING.substring(i, i + 1);
        }
{code}

Can be recoded as:
{code:java}
        for (char c = 0; c < CHAR_STRING_ARRAY.length; c++) {
            CHAR_STRING_ARRAY[c] = String.valueOf(c);
        }
{code}

With the lang 3.0 code, using the Oracle Java 5 String impl, the 128 Strings 
share the underlying CHAR_STRING char[] because of the way Sun implemented 
String#substring(int,int).

The proposed implementation does not reply on this private implementation 
detail but creates one char[1] array per String. 

Thoughts?

  was:
CharUtils static final array CHAR_STRING is not needed to compute 
CHAR_STRING_ARRAY.

This:

{code:java}
    private static final String CHAR_STRING = 
        "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
        "\b\t\n\u000b\f\r\u000e\u000f" +
        "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
        "\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f" +
        "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
        "\u0028\u0029\u002a\u002b\u002c\u002d\u002e\u002f" +
        "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
        "\u0038\u0039\u003a\u003b\u003c\u003d\u003e\u003f" +
        "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
        "\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f" +
        "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
        "\u0058\u0059\u005a\u005b\\\u005d\u005e\u005f" +
        "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
        "\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f" +
        "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
        "\u0078\u0079\u007a\u007b\u007c\u007d\u007e\u007f";

// snip

        for (int i = 127; i >= 0; i--) {
            CHAR_STRING_ARRAY[i] = CHAR_STRING.substring(i, i + 1);
        }
{code}

Can be recoded as:
{code:java}
        for (char c = 0; c < CHAR_STRING_ARRAY.length; c++) {
            CHAR_STRING_ARRAY[c] = String.valueOf(c);
        }
{code}


> CharUtils static final array CHAR_STRING is not needed to compute 
> CHAR_STRING_ARRAY
> -----------------------------------------------------------------------------------
>
>                 Key: LANG-736
>                 URL: https://issues.apache.org/jira/browse/LANG-736
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.*
>    Affects Versions: 3.0
>            Reporter: Gary D. Gregory
>            Assignee: Gary D. Gregory
>             Fix For: 3.0.1
>
>         Attachments: lang-736.diff
>
>
> CharUtils static final array CHAR_STRING is not needed to compute 
> CHAR_STRING_ARRAY.
> This:
> {code:java}
>     private static final String CHAR_STRING = 
>         "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
>         "\b\t\n\u000b\f\r\u000e\u000f" +
>         "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
>         "\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f" +
>         "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
>         "\u0028\u0029\u002a\u002b\u002c\u002d\u002e\u002f" +
>         "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
>         "\u0038\u0039\u003a\u003b\u003c\u003d\u003e\u003f" +
>         "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
>         "\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f" +
>         "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
>         "\u0058\u0059\u005a\u005b\\\u005d\u005e\u005f" +
>         "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
>         "\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f" +
>         "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
>         "\u0078\u0079\u007a\u007b\u007c\u007d\u007e\u007f";
> // snip
>         for (int i = 127; i >= 0; i--) {
>             CHAR_STRING_ARRAY[i] = CHAR_STRING.substring(i, i + 1);
>         }
> {code}
> Can be recoded as:
> {code:java}
>         for (char c = 0; c < CHAR_STRING_ARRAY.length; c++) {
>             CHAR_STRING_ARRAY[c] = String.valueOf(c);
>         }
> {code}
> With the lang 3.0 code, using the Oracle Java 5 String impl, the 128 Strings 
> share the underlying CHAR_STRING char[] because of the way Sun implemented 
> String#substring(int,int).
> The proposed implementation does not reply on this private implementation 
> detail but creates one char[1] array per String. 
> Thoughts?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to