2016-12-03 43 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 –