加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

为什么Java Enumeration不按顺序返回属性列表?

发布时间:2020-12-15 05:08:48 所属栏目:Java 来源:网络整理
导读:我正在创建一个可以更改语言的简单程序,我将转换字符串数组中myBundle.properties文件中的属性列表. 这是myBundle.properties文件: #default test1=Hello1 test2=Hello2 test3=Hello3 test4=Hello4 test5=Hello5 test6=Hello6 这是Java代码: import java.u
我正在创建一个可以更改语言的简单程序,我将转换字符串数组中myBundle.properties文件中的属性列表.

这是myBundle.properties文件:

#default
 test1=Hello1
 test2=Hello2
 test3=Hello3
 test4=Hello4
 test5=Hello5
 test6=Hello6

这是Java代码:

import java.util.*;

class BundleTest {

    BundleTest() {
        String[] s = returnStringArray(Locale.ENGLISH);
        for(int i=0; i<s.length; i++) {
            System.out.println(s[i]);
        }
    }

    private String[] returnStringArray(Locale language) {
        try {
            ResourceBundle labels = ResourceBundle.getBundle("myBundle",language);
            Enumeration<String> keys = labels.getKeys();
            Vector v = new Vector();
            String key = null;
            while (keys.hasMoreElements()) {
                v.add(keys.nextElement());
            }
            String[] s = new String[v.size()];
            for(int i=0; i<s.length; i++) {
                s[i] = (String)v.elementAt(i);
            }
            return s;
        } catch (MissingResourceException mre) {
            System.out.println("Risorse della lingua non trovate!");
            return null;
        }
    }

    public static void main(String[] args) {
        new BundleTest();
    }
}

但是,令人惊讶的是,当我执行程序时,它会以偶然的顺序返回字符串.为什么枚举这种奇怪的行为?

bash-4.1$java BundleTest
test1
test6
test4
test5
test2
test3

解决方法

我不知道ResourceBundle类的确切细节,但在查看代码示例时,似乎它具有键/值对.

这表明它将其内容存储在HashMap中.(再次,因为我不知道ResounrceBundle,这是预感)HashMap键(和值)是无序的,因为它们的存储方式使得可以轻松找到给定键的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读