2016-12-03 40 views
-3

我有一个要求,如我输入4位数字1101然后我需要生成16位数字(1234567891234567)。当再输入产生的16位号码我需要显示输入的号码1101如何做到这一点在JavaJava程序生成16位数字到原始号码

+1

如何使用地图? – Ravikumar

+0

'长输出=(输入<10000?输入+ 1234567890120000L:输入%10000)' – Andreas

+0

甚至更​​简单:'长输出= 1234567891234567L - 输入' – Andreas

回答

1

定义Bidirectinal地图

class BiDirMap<K,V> extends HashMap<K, V>{ 

    Map<V,K> reversedMap = new HashMap<V,K>(); 

    @Override 
    public V put(K key, V value) { 
     // TODO Auto-generated method stub 
     reversedMap.put(value, key); 
     return super.put(key, value); 
    } 

    public K getKeyFromValue(V value){ 
     return reversedMap.get(value); 
    } 
} 

使用它像:

Map<Long, Long> myFoo = new BiDirMap<Long, Long>(); 

添加元素,如:

myFoo.put(1111, getNumberFor(1111)); 
myFoo.put(122, getNumberFor(122)); 

,并找到通过类似的值:

myFoo.getKeyFromValue(1234567891234567); 

注意,第三方库像番石榴会做到这一点

+0

谢谢!它的工作 –

+0

嗨,没有getNumberFor()方法在类中可用。稍微更新 –

+0

ja ...这是一个方法,从数字计算回1111 –