String []常量自动排序?如何保持索引顺序?

时间:2014-07-03 15:39:48

标签: java arrays

我有分隔符的String []

private static final String[] LEFT_DELIMITER = {
    "PUT", "CALL",
    "JAN", "FEB", "MAR", "APR", "MAY", "JUN", 
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
};

当我使用旧的for循环遍历此String []时,索引0处的条目是JAN而不是PUT。但是,如果我在我使用它的方法中声明String []

String[] delim = {
    "PUT", "CALL",
    "JAN", "FEB", "MAR", "APR", "MAY", "JUN", 
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
};

索引0处的结果是预期的PUT。

为什么按日历月排序而另一个不排序?我想要的只是让数组保存我放置它们的项目。有没有办法做到这一点作为常数?

1 个答案:

答案 0 :(得分:1)

我不这么认为。当我读到这个问题时,我感到非常震惊,但是一个快速的单元测试证明确实一切正常。

import org.junit.Assert;

public class Test {

    private static final String[] LEFT_DELIMITER = {
            "PUT", "CALL",
            "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
            "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
    };

    @org.junit.Test
    public void test() {
        String[] delim = {
                "PUT", "CALL",
                "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
                "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
        };

        for (int i = 0; i < LEFT_DELIMITER.length; i++) {
            Assert.assertEquals(LEFT_DELIMITER[i], delim[i]);
        }
    }
}

您是否100%确定您编写的代码最终会出现在已编译的类文件中?我认为你认为你运行某个代码,但确实运行了一些不同的东西 - 也许是一个旧版本?