Никак не могу понять почему код сработал правильно? Судя логике он берет первый элемент и сравнивает со всеми, находя совпадение и считая количество этих совпадений. Потом все кидает в мэп. Но я думал, что если в массиве будут, например, первый и второй элементы одинаковы, то второй проход по внешнему циклу занесет не правильную информацию в конечный мэп.
for (String s1 : list){
            int count = 0;
                for (String s2 : list){
                    if(s1.equals(s2)){
                        count++;
                    }
                }
                result.put(s1, count);
        }