一个比较迷茫的算法,求解

YUDG 2017-07-21 05:30:43
假如有一个HashMap对象,他的key是有规律的,例如 01,22,23,30,02,03....
也就是说,肯定是由2个数字组成。

我怎样按照第一个数字来分别存放在对应的hashmap里边?
就是说 01,02,03.。。。的放一个hashmap. 22,23.....放一个。。。。。。以此类推?

最好可以遍历一次HashMap来实现这个处理。
...全文
647 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wautsns 2017-07-29
  • 打赏
  • 举报
回复
引用 9 楼 yudiangong 的回复:
[quote=引用 5 楼 phantom7493 的回复:] 4楼case貌似有点繁琐,不如List<HashMap<Integer,XXX>> for(int key : hashMap.keySet()) list.get(key / 10).put(key,hashMap.getValue(key)) 然后list里索引是几就是几开头的数字。
兄弟,你这个无法判断第一个数字是否相同呀。只有第一个数字相同的才能分在一组。[/quote] key/10就是判断第一个数字是否相同的啊,list里的每一项就时开头相同的一组啊。。。
千杯不醉476 2017-07-25
  • 打赏
  • 举报
回复
这里的list使用的是List<HashMap<Integer,XXX>> list(2),则是索引为2的HashMap<Integer,XXX>,然后在这个HashMap<Integer,XXX>里put这3个数字 换言之,根据key的十位数,放到由十位数字区分的HashMap<Integer,XXX>里 0~9放到第一个HashMap<Integer,XXX>里, 10~19放到第二个HashMap<Integer,XXX>里, 20~29放到第三个HashMap<Integer,XXX>里 还有什么问题吗?
YUDG 2017-07-25
  • 打赏
  • 举报
回复
引用 10 楼 CORA_S_T 的回复:
list.get(key / 10)就已经区分不同了,01-09是在list.get(0),同时10-19是在list.get(1)里,这样的做法,暂时只满足三位以下的数。
假如有23,25,29.遍历到这3个数字。 key/10的时候,会有3次2. list.get(2)取得的对象,不都是同一个位置么? 我理解的不对吗?
千杯不醉476 2017-07-25
  • 打赏
  • 举报
回复
list.get(key / 10)就已经区分不同了,01-09是在list.get(0),同时10-19是在list.get(1)里,这样的做法,暂时只满足三位以下的数。
YUDG 2017-07-25
  • 打赏
  • 举报
回复
引用 5 楼 phantom7493 的回复:
4楼case貌似有点繁琐,不如List<HashMap<Integer,XXX>> for(int key : hashMap.keySet()) list.get(key / 10).put(key,hashMap.getValue(key)) 然后list里索引是几就是几开头的数字。
兄弟,你这个无法判断第一个数字是否相同呀。只有第一个数字相同的才能分在一组。
YUDG 2017-07-25
  • 打赏
  • 举报
回复
OK,谢了,有点思路了,我自己试下。
自由自在_Yu 2017-07-25
  • 打赏
  • 举报
回复
4#的方法就不错呀
YUDG 2017-07-25
  • 打赏
  • 举报
回复
有懂得兄弟帮忙看下啊? 就是把第一位相同的数据放在一组。
qq_33812937 2017-07-25
  • 打赏
  • 举报
回复
支持一下……
wautsns 2017-07-22
  • 打赏
  • 举报
回复
4楼case貌似有点繁琐,不如List<HashMap<Integer,XXX>> for(int key : hashMap.keySet()) list.get(key / 10).put(key,hashMap.getValue(key)) 然后list里索引是几就是几开头的数字。
vv千古 2017-07-22
  • 打赏
  • 举报
回复
Enumeration<Integer> k = hashmap.keys(); int i; while(k.hasMoreElements()){ i=k.nextElement(); switch(i/10){ case 0:hash_0.put(i,hashmap.get(i)); case 1: case 2: ...... } } 大概这样,hashmap是原始的,hash_0..是新的,再处理一下你的数据格式就行
vv千古 2017-07-22
  • 打赏
  • 举报
回复
遍历原始HashMap,把每个key/10用switch/case判断
YUDG 2017-07-21
  • 打赏
  • 举报
回复
引用 1 楼 soton_dolphin 的回复:
你放到一个TreeMap里面不就得了?
能否给个例子?不太懂treemap。。。。。
soton_dolphin 2017-07-21
  • 打赏
  • 举报
回复
你放到一个TreeMap里面不就得了?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧