/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
System.
out.
println(InstallmentTransaction.
getInstance(10,
false).
toString()); }
}
class InstallmentTransaction {
private final int installments;
private final boolean interest;
private static final Map
<Integer, Map
<Boolean, InstallmentTransaction
>> instances
= new HashMap
<>();
private InstallmentTransaction(int installments, boolean interest)
{
this.installments = installments;
this.interest = interest;
}
public static InstallmentTransaction getInstance(int installments, boolean interest){
synchronized(lockObject){
Map
<Boolean, InstallmentTransaction
> map
= instances.
get(installments
); if(map == null){
map = new HashMap<>();
instances.put(installments, map);
}
InstallmentTransaction instance = map.get(interest);
if(instance == null){
instance = new InstallmentTransaction(installments, interest);
map.put(interest, instance);
}
return instance;
}
}
//getters go here
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTeXN0ZW0ub3V0LnByaW50bG4oSW5zdGFsbG1lbnRUcmFuc2FjdGlvbi5nZXRJbnN0YW5jZSgxMCwgZmFsc2UpLnRvU3RyaW5nKCkpOwoJfQp9CgpjbGFzcyBJbnN0YWxsbWVudFRyYW5zYWN0aW9uIHsKICAgIHByaXZhdGUgZmluYWwgaW50IGluc3RhbGxtZW50czsKICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBpbnRlcmVzdDsKCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8SW50ZWdlciwgTWFwPEJvb2xlYW4sIEluc3RhbGxtZW50VHJhbnNhY3Rpb24+PiBpbnN0YW5jZXMgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgbG9ja09iamVjdCA9IG5ldyBPYmplY3QoKTsKCiAgICBwcml2YXRlIEluc3RhbGxtZW50VHJhbnNhY3Rpb24oaW50IGluc3RhbGxtZW50cywgYm9vbGVhbiBpbnRlcmVzdCkKICAgIHsKICAgICAgICB0aGlzLmluc3RhbGxtZW50cyA9IGluc3RhbGxtZW50czsKICAgICAgICB0aGlzLmludGVyZXN0ID0gaW50ZXJlc3Q7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBJbnN0YWxsbWVudFRyYW5zYWN0aW9uIGdldEluc3RhbmNlKGludCBpbnN0YWxsbWVudHMsIGJvb2xlYW4gaW50ZXJlc3QpewogICAgICAgIHN5bmNocm9uaXplZChsb2NrT2JqZWN0KXsKICAgICAgICAgICAgTWFwPEJvb2xlYW4sIEluc3RhbGxtZW50VHJhbnNhY3Rpb24+IG1hcCA9IGluc3RhbmNlcy5nZXQoaW5zdGFsbG1lbnRzKTsKICAgICAgICAgICAgaWYobWFwID09IG51bGwpewogICAgICAgICAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8PigpOwogICAgICAgICAgICAgICAgaW5zdGFuY2VzLnB1dChpbnN0YWxsbWVudHMsIG1hcCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgSW5zdGFsbG1lbnRUcmFuc2FjdGlvbiBpbnN0YW5jZSA9IG1hcC5nZXQoaW50ZXJlc3QpOwogICAgICAgICAgICBpZihpbnN0YW5jZSA9PSBudWxsKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbmV3IEluc3RhbGxtZW50VHJhbnNhY3Rpb24oaW5zdGFsbG1lbnRzLCBpbnRlcmVzdCk7CiAgICAgICAgICAgICAgICBtYXAucHV0KGludGVyZXN0LCBpbnN0YW5jZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgIH0KICAgIH0KCiAgICAvL2dldHRlcnMgZ28gaGVyZQp9