比如有 4, 12两个数字,
我需要做一个Map的Key,现在我用笨方法,将4与12中间加一个_,做成一个String的key
如:
String key=4+"_"+12;
Map成了 Map<String,Object>我始终觉得可以做的更好,更高效率的数学方法(应该不是String类型的key了吧)
有没有什么好办法呢?

解决方案 »

  1.   

    有时最简单的就是最高效的,难道你还想做某种运算后再做为key?
      

  2.   

    你这样做也为了把这个key还原来4,12 方便
      

  3.   


    如果不需要还原的情况下呢?
    如何用两个数字做出一个key?
      

  4.   

    用一个map对象做key...夸张了点喵。
    我说的维护不是针对应用,而是说代码的维护,过半年再看,string的方法一目了然,但是数学方法说不定自己都看不明白了。
      

  5.   

    问:两个数字如何做成map的key? 楼主自己已经是正解~~~
      

  6.   

    1. 如果数字是有规则的,比如说不超过多少的,你是可以写一个hash 函数的
    比如说 a * 23 + b,但是你要保证其唯一性。2. 如果两个数字不限制,那么你那个字符串的做法,其实是个相当不错的办法了。
      

  7.   

    如果你的两个数都是int型的话,可以如下:
    合并为long,long x = (((long)a) << 31) | ((long)b);
    拆分 a = (int)(x >> 31); b = (int)(x & 0x00000000FFFFFFFF);
      

  8.   

    楼上写的好抽象啊,我写个容易明白的
    如果第二个数字是在一定范围内的,可以把第一个数字乘以这个范围
    如第二个数在10000以内
    int key = n1 * 10000 + n2;
    还原就不用说了吧
      

  9.   

    如果数字不大的话,4*100+12=40012跟4_12是一样的,就是可以用int
      

  10.   


    哪里不一样了,搜的时候一样搜,TreeMap排序也照样排啊
      

  11.   

    呵,如果这个数字以后不需要经常转换
    个人觉得转成字符串好些
    但如果经常要转换
    可以考虑把它用一个类封装起来
    再得载hashCode与equals方法
      

  12.   

    数字和string计算哈希码的运算量相差很多吗?
      

  13.   

    直接把数字转换成  字符串就好了
    可以这样定义
     String x=4+"";
    这样获取的时候  可以用  Integer.parseInt(x)获取到 int型的 4
      

  14.   

    创建一个类,用类保存这两个数字,将类的对象作为map的key
      

  15.   

    用位移应该比较快4,12变成字符串不一定要加个_,直接讲数字转为String不就可以了,最快的方法是用""+num
    PS:没明白楼主的用意
      

  16.   

    楼主可以把这两个数转换成HEX然后加上两个UUID,经过128位的加密以后加上一个后缀为当前时间毫秒除以一个13位随机素数的商的开7次方的保留小数点后32位的倒数乘以零,用这个数当Map的key保证让你快活无比。
      

  17.   

    改成String挺好的,指定分隔符就完事了。