java map存储的是键顺序

我想添加一些数据到map中,比如键名为x,1,4,2,z,O那么我遍历输出的顺序也应该是x,1,4,2,z,O应该用哪个的?我用的是treemap不过发现遍历后,会自动按... 我想添加一些数据到map 中, 比如键名为x,1,4,2,z,O
那么我遍历输出的顺序也应该是x,1,4,2,z,O

应该用哪个的?我用的是 treemap不过发现遍历后,会自动按自然顺序扁平
展开
 我来答
jmqra22
2010-11-25 · TA获得超过4053个赞
知道小有建树答主
回答量:2823
采纳率:0%
帮助的人:1402万
展开全部
不知道楼主指的顺序是什么。使用Map的,向来只关心键值,只要有key,就能取出value;如果没有key,也无法取出value,从来不会关心顺序问题,也根本没有意义。

如果楼主想通过循环取值,建议不要用map了,这和map的初衷不符。楼主可以用List来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-11-24
展开全部
public static void main(String[] args) {
//使用Map声明对象。
Map<Integer, String> treemap = new TreeMap<Integer, String>();
treemap.put(1,"x");
treemap.put(2,"1");
treemap.put(3,"4");
treemap.put(4,"2");
treemap.put(5,"z");
treemap.put(6,"O");
Set<Integer> keySet = treemap.keySet(); //得到key set
System.out.println("列出所有值:");

//循环 输出各个key set对应的值
for (Integer key : keySet ) {
System.out.print(treemap.get(key)+" ");

}
}
遍历输出的值还是原来顺序,不会改变顺序的。

希望对你有所帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1125535
2010-12-07
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
看这个 如何让 Map 中的值按放入顺序输出 http://unmi.cc/map-sorted-output-by-input
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Big嘴
2010-11-24 · TA获得超过4097个赞
知道小有建树答主
回答量:697
采纳率:50%
帮助的人:632万
展开全部
java.util.TreeMap 放入其中的value,自动按key进行排序, 默认的排序规则按ascii码排序,如果是key是英文和数字不会有问题,如果中文则会出现问题,需要自己写排序规则。
比较器需要实现java.text.Collator类,例如:

package cn.tjopen.mediaman.util;

import java.text.CollationKey;
import java.text.Collator;

public class CollatorComparator extends Collator {
private Collator collator = Collator.getInstance();
private int sort=1;
@Override
public int compare(String arg0, String arg1) {
CollationKey key1 = collator.getCollationKey(arg0);
CollationKey key2 = collator.getCollationKey(arg1);
return sort*key1.compareTo(key2);
}
/**
* 设定排序的方向
* @param i 排序方向(正数:正序;负数:倒序)
*/
public void setSort(int i){
if(i>0){
sort=1;
}else if(i<0){
sort=-1;
}
}
@Override
public CollationKey getCollationKey(String arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}

}

比较器的使用:

int sort = 1;//>0正序<0倒叙

CollatorComparator comparator = new CollatorComparator();
comparator.setSort(sort);
Map map = new TreeMap(comparator);

然后在把要排序的字段作为key,相应的信息作为对应的value,即可实现排序

注意:key值不能重复,如果排序字段有重复,则需要进行处理。

例如:方法一:在向map中存放数据时,先判断要放的key是否已存在,如果存在在当前值后面加一区分标记

方法二:如果信息中有不可能重复的字段,在排序字段后面加上这个不重复的字段值,把这个组合当做key
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式