/* package whatever; // don't place package name! */
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
 
 
 class StateCityClassTest {
 
    public static void main
(String[] args
) {         StateCityMap map = new StateCityMap();
 
        map.putStateCity(1253, "São Paulo", "Osasco");
        map.putStateCity(1254, "São Paulo", "Santos");
        map.putStateCity(1255, "Rio de Janeiro", "Cabo Frio");
 
        System.
out.
println(map.
getStateCity(1253));  
        System.
out.
println(map.
showAllItens());  
    }
 
}
 
class StateCityMap {
 
    private final Map
<Integer, HashMap
<String, String
>> codeStateList
;  
    public StateCityMap() {
        codeStateList = new HashMap<>();
    }
 
    public void putStateCity
(int code, 
String state, 
String city
) {         HashMap
<String, String
> stateCity 
= new HashMap
<>();        stateCity.put(state, city);
        codeStateList.put(code, stateCity);
    }
 
    public String getStateCity
(int key
) {         return this.containsKey(key) ? codeStateList.get(key).toString() : null;
    }
 
    public void removeStateCity(int key) {
        for (Iterator
<Map.
Entry<Integer, HashMap
<String, String
>>> iterator 
= codeStateList.
entrySet().
iterator(); iterator.
hasNext();) {             if (entry.getKey().equals(key)) {
                iterator.remove();
            }
        }
    }
 
    public boolean containsKey(int key) {
        return codeStateList.containsKey(key);
    }
 
 
    public String showAllItens
() {         for (Map.
Entry<Integer, HashMap
<String, String
>> entry 
: codeStateList.
entrySet()) {             allItens += entry.getKey() + " : " + entry.getValue() + "\n";
        }
        return allItens;
    }
}
 
				LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwppbXBvcnQgamF2YS51dGlsLk1hcDsKCgogY2xhc3MgU3RhdGVDaXR5Q2xhc3NUZXN0IHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU3RhdGVDaXR5TWFwIG1hcCA9IG5ldyBTdGF0ZUNpdHlNYXAoKTsKCiAgICAgICAgbWFwLnB1dFN0YXRlQ2l0eSgxMjUzLCAiU8OjbyBQYXVsbyIsICJPc2FzY28iKTsKICAgICAgICBtYXAucHV0U3RhdGVDaXR5KDEyNTQsICJTw6NvIFBhdWxvIiwgIlNhbnRvcyIpOwogICAgICAgIG1hcC5wdXRTdGF0ZUNpdHkoMTI1NSwgIlJpbyBkZSBKYW5laXJvIiwgIkNhYm8gRnJpbyIpOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obWFwLmdldFN0YXRlQ2l0eSgxMjUzKSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihtYXAuc2hvd0FsbEl0ZW5zKCkpOwoKICAgIH0KCn0KCmNsYXNzIFN0YXRlQ2l0eU1hcCB7CgogICAgcHJpdmF0ZSBmaW5hbCBNYXA8SW50ZWdlciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IGNvZGVTdGF0ZUxpc3Q7CgogICAgcHVibGljIFN0YXRlQ2l0eU1hcCgpIHsKICAgICAgICBjb2RlU3RhdGVMaXN0ID0gbmV3IEhhc2hNYXA8PigpOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHB1dFN0YXRlQ2l0eShpbnQgY29kZSwgU3RyaW5nIHN0YXRlLCBTdHJpbmcgY2l0eSkgewogICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHN0YXRlQ2l0eSA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBzdGF0ZUNpdHkucHV0KHN0YXRlLCBjaXR5KTsKICAgICAgICBjb2RlU3RhdGVMaXN0LnB1dChjb2RlLCBzdGF0ZUNpdHkpOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdGVDaXR5KGludCBrZXkpIHsKICAgICAgICByZXR1cm4gdGhpcy5jb250YWluc0tleShrZXkpID8gY29kZVN0YXRlTGlzdC5nZXQoa2V5KS50b1N0cmluZygpIDogbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCByZW1vdmVTdGF0ZUNpdHkoaW50IGtleSkgewogICAgICAgIGZvciAoSXRlcmF0b3I8TWFwLkVudHJ5PEludGVnZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Pj4gaXRlcmF0b3IgPSBjb2RlU3RhdGVMaXN0LmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOykgewogICAgICAgICAgICBNYXAuRW50cnk8SW50ZWdlciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IGVudHJ5ID0gaXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICBpZiAoZW50cnkuZ2V0S2V5KCkuZXF1YWxzKGtleSkpIHsKICAgICAgICAgICAgICAgIGl0ZXJhdG9yLnJlbW92ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zS2V5KGludCBrZXkpIHsKICAgICAgICByZXR1cm4gY29kZVN0YXRlTGlzdC5jb250YWluc0tleShrZXkpOwogICAgfQoKICAgIAogICAgcHVibGljIFN0cmluZyBzaG93QWxsSXRlbnMoKSB7CiAgICAgICAgU3RyaW5nIGFsbEl0ZW5zID0gIiI7CiAgICAgICAgZm9yIChNYXAuRW50cnk8SW50ZWdlciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IGVudHJ5IDogY29kZVN0YXRlTGlzdC5lbnRyeVNldCgpKSB7CiAgICAgICAgICAgIGFsbEl0ZW5zICs9IGVudHJ5LmdldEtleSgpICsgIiA6ICIgKyBlbnRyeS5nZXRWYWx1ZSgpICsgIlxuIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFsbEl0ZW5zOwogICAgfQp9Cg==