得到 java map 的键 有哪些方法

map.keySet()会自动排序key的值,我不想让你自动排序怎么办?就是想按照原来put()的顺序输出,请各位大侠帮帮小弟?可是我遇到了必须用map但是还要有以前的顺... map.keySet() 会自动排序 key 的 值,
我不想让你自动排序怎么办?
就是想按照原来 put() 的 顺序输出,
请各位大侠帮帮小弟?
可是我遇到了必须用 map 但是还要有 以前的顺序,应该怎么办
展开
 我来答
程序猿集锦
2010-04-07 · 专注于各种数据库技术
程序猿集锦
采纳数:91 获赞数:277

向TA提问 私信TA
展开全部
public static void main(String[] args) {
Map map = new HashMap();
map.put("1", "aaaa");
map.put("2", "bbbb");
map.put("3", "cccc");
map.put("4", "dddd");
Iterator keyIteratorOfMap = map.keySet().iterator();
while (keyIteratorOfMap.hasNext()) {
Object key = keyIteratorOfMap.next();
System.out.println("map key【" + key.toString() + "】map value【"+ map.get(key)+"】");
}
/********************************************/
TreeMap treeMap = new TreeMap();
treeMap.put("1", "aaaa");
treeMap.put("2", "bbbb");
treeMap.put("3", "cccc");
treeMap.put("4", "dddd");
Iterator keyIteratorOfTreeMap = treeMap.keySet().iterator();
while (keyIteratorOfTreeMap.hasNext()) {
Object key = keyIteratorOfTreeMap.next();
System.out.println("treeMap key【" + key.toString() + "】value:"+ treeMap.get(key)+"】");
}
}
==========================================
将上面代码执行以下试试你就明白了。
HashMap它是没用顺序可言的,而TreeMap是有顺序的。 不过TreeMap的效率是没有HashMap的效率高的。如果你不需要数据的存放顺序建议使用HashMap,如果需要用到数据的顺序则考虑TreeMap。原理可以看一下哈希码值方面的东西。
grass107
2010-03-26 · TA获得超过687个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:355万
展开全部
这个基本不可能。
在map中有自己的一套排序规则,具体根据什么排序不记得了。

也就是说,当你把数据put到map中的时候,顺序已经排好了。
除非是你put进去的时候的顺序刚好与map的排序规则吻合。

或者自己再写个排序。

http://zhidao.baidu.com/question/79154678.html 这个应该跟你问的差不多。

------------------------------
如果必须要这样的话,
那么put的时候对key做可以排序的处理。
比如说,在key的值后面加上编号,
然后在读的时候自己写个方法排序。
再根据排好的顺序去取value。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小傻

2015-09-23 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31133
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部
Java遍历Map的两种实现方法:
1.根据map的keyset()方法来获取key的set集合,然后遍历map取得value的值
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest2
{
public static void main(String[] args)
{
HashMap map = new HashMap();//新建一个map集合

map.put("a","aaaa");
map.put("b","bbbb");
map.put("c","cccc");
map.put("d","dddd");

Set set = map.keySet();//得到所有map里面key的集合

for(Iterator iter = set.iterator(); iter.hasNext();)//遍历
{
String key = (String)iter.next();
String value = (String)map.get(key);
System.out.println(key+"===="+value);
}
}
}

2.第二种方式是使用Map.Entry来获取:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapTest4
{
public static void main(String[] args)
{
HashMap map = new HashMap();//新建一个map集合

map.put("a","aa");
map.put("b","bb");
map.put("c","cc");
map.put("d","dd");

Set set = map.entrySet();

for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next();

String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println(key +" :" + value);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ef10e91
2010-03-26 · TA获得超过1822个赞
知道大有可为答主
回答量:1223
采纳率:50%
帮助的人:1281万
展开全部
Map是不能保证顺序的,内部有一套自己的排序机制,已达到快速检索的目的。而其实现类排序机制也是不同的,如HashMap是通过Hash值排序的。
如果你想要按以前的顺序只能采用List或者其他的顺序性结构
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MyLazyGirl
2010-03-26 · 超过19用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:56.5万
展开全部
你存的时候把Key放在数组或者ArrayList里面
比如ArrayList al = new ArrayList();
map.put(k1,v1);
al.add(k1);
................
for(xx : al)
{
map.get(xx);
}
这样取肯定是按你放的顺序取得
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式