Здравствуйте. Подскажите, пожалуйста, почему ловлю ошибку при таком содержимом мапы
paramsThree.put("null",null);
?
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1967)
	at com.javarush.task.task22.task2208.Solution.getQuery(Solution.java:41)
	at com.javarush.task.task22.task2208.Solution.main(Solution.java:20)
Код
public class Solution {

    public static Map<String,String> paramsOne = new LinkedHashMap<>();
    public static Map<String,String> paramsTwo = new LinkedHashMap<>();
    public static Map<String,String> paramsThree = new LinkedHashMap<>();

    public static void main(String[] args) {
        System.out.println(getQuery(paramsTwo));
        System.out.println(getQuery(paramsOne));
        System.out.println(getQuery(paramsThree));

    }

    public static String getQuery(Map<String, String> params) {
        StringBuilder stringBuilder = new StringBuilder();
        String result =  "";

if ((!checkNull(params))||(params.isEmpty())) return result = "";
            for (Map.Entry<String, String> entry : params.entrySet()) {
                if (entry.getValue() == null ) {
                continue;
                }
                    stringBuilder.append(String.format("%s = '%s' and ", entry.getKey(), entry.getValue()));
                }

            result = stringBuilder.toString().substring(0,stringBuilder.lastIndexOf("and")).trim();

        return result;

    }


    static {
        paramsOne.put("name", "Ivanov");
        paramsOne.put("country", "Ukraine");
        paramsOne.put("city", "Kiev");
        paramsOne.put("age", null);

        paramsTwo.put("name", "Vova");
        paramsTwo.put("country", "Canada");
        paramsTwo.put("city", "Ottawa");
        paramsTwo.put("age", "18");



     paramsThree.put("null",null);
    }

    public static  <K, V> boolean checkNull(Map<K, V> entry) {
        int i = 0;
        for (Map.Entry<K,V> entry1:entry.entrySet()){
            if(entry1.getKey()!=null||entry1.getValue()!=null){
                i+=1;
            }

        }

        if (i>0) {
            return true;
        }
            return false;

    }
}