为什么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键(和值)是无序的,因为它们的存储方式使得可以轻松找到给定键的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |