当我想要对地图进行排序时遇到一些麻烦,当我创建一个传递字符串的地图时,它会像
那样组织起来nombre=EDIFICADORA JUANA, descripcion= LOS frst com MEJORES Estamso para servir LOS, correo1=rst008@guan.com, correo2=oipoa@gmaio.com, numero1=24602254, numero2=55655545
当我使用这些数据创建地图时,它会变得无序,这是创建地图的方法:
private HashMap<String, String> getMap(String rawData) {
HashMap<String, String> map = new HashMap<>();
String[] pairs = rawData.split(","); // split into key-value pairs
for(String pair: pairs) {
pair = pair.trim(); // get rid of extraneous white-space
String[] components = pair.split("=");
String key = components[0].trim();
String value = components[1].trim();
map.put(key, value); // put the pair into the map
}
return map;
}
此函数返回类似于:
的内容0 = {HashMap $ HashMapEntry @ 5854}&#34; correo2&#34; - &GT; &#34; oipoa@gmaio.com"
1 = {HashMap $ HashMapEntry @ 5855}&#34; correo1&#34; - &GT; &#34; rst008@guan.com"`
2 = {HashMap $ HashMapEntry @ 5856}&#34; numero2&#34; - &GT; &#34; 55655545&#34;
3 = {HashMap $ HashMapEntry @ 5857}&#34; nombre&#34; - &GT; &#34; EDIFICADORA JUANA&#34;
4 = {HashMap $ HashMapEntry @ 5858}&#34;描述&#34; - &GT; &#34; LOS frst com MEJORES Estamso 帕&#34;
5 = {HashMap $ HashMapEntry @ 5859}&#34; numero1&#34; - &GT; &#34; 24602254&#34;
如何像字符串值一样对此地图进行排序?
我期待:
0 = {HashMap $ HashMapEntry @ 5857}&#34; nombre&#34; - &GT; &#34; EDIFICADORA JUANA&#34;
1 = {HashMap $ HashMapEntry @ 5858}&#34;描述&#34; - &GT; &#34; LOS frst com MEJORES Estamso par&#34;
2 = {HashMap $ HashMapEntry @ 5855}&#34; correo1&#34; - &GT; &#34; rst008@guan.com"`
3 = {HashMap $ HashMapEntry @ 5854}&#34; correo2&#34; - &GT; &#34; oipoa@gmaio.com"
4 = {HashMap $ HashMapEntry @ 5859}&#34; numero1&#34; - &GT; &#34; 24602254&#34;
5 = {HashMap $ HashMapEntry @ 5856}&#34; numero2&#34; - &GT; &#34; 55655545&#34;
答案 0 :(得分:2)
使用make
的{{3}}实施,而不是HashMap
迭代时,它会在地图中保留插入顺序:
使用Hash表和Map接口的链表实现 可预测的迭代顺序。
这样改变:
Map
答案 1 :(得分:1)
答案 2 :(得分:1)
问题是您正在使用HashMap。来自他们的文档:
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变
您正在寻找能够维护您将内容放入地图的顺序的内容,因此LinkedHashMap可以提供帮助。如果这对您来说还不够,您可以编写自己的Map实现来实现SortedMap。