несовместимые типы требуемый объект найден запись - PullRequest
1 голос
/ 16 июня 2020

Я хочу напечатать все перестановки строки без рекурсии. Выдает ошибку несовместимые типы требуемый объект найден запись в for (Entry chr1 : firstMap.entrySet()) и for (Entry chr2 : secondMap.entrySet()). Как я могу решить эту проблему, пожалуйста, помогите!

public static List genPermutation(String input) {
            Map firstMap = new LinkedHashMap();
            Map secondMap = new LinkedHashMap();
            List output = new ArrayList();

            char[] chr = input.toCharArray();
            for (int i = 0; i < chr.length; i++) {
                firstMap.put(Character.valueOf(chr[i]), String.valueOf(chr[i]));
                secondMap.put(Character.valueOf(chr[i]), String.valueOf(chr[i]));
            }

            for (Entry chr1 : firstMap.entrySet()) {
                for (Entry chr2 : secondMap.entrySet()) {
                    if (chr1.getValue().equals(chr2.getValue())) {
                        output.add(String.valueOf(chr1.getValue()));
                    } else {
                        output.add(String.valueOf(chr1.getValue())
                                + String.valueOf(chr2.getValue()));
                    }
                }
            }

            return output;
        }

1 Ответ

0 голосов
/ 16 июня 2020

Поскольку тип firstMap является необработанным Map, firstMap.entrySet() возвращает необработанный Set, элементы которого относятся к типу Object, а не Entry.

Используйте параметризованные типы вместо сырых типов:

    public static List<String> genPermutation(String input) {
        Map<Character,String> firstMap = new LinkedHashMap<>();
        Map<Character,String> secondMap = new LinkedHashMap<>();
        List<String> output = new ArrayList<>();

        char[] chr = input.toCharArray();
        for (int i = 0; i < chr.length; i++) {
            firstMap.put(Character.valueOf(chr[i]), String.valueOf(chr[i]));
            secondMap.put(Character.valueOf(chr[i]), String.valueOf(chr[i]));
        }

        for (Map.Entry<Character,String> chr1 : firstMap.entrySet()) {
            for (Map.Entry<Character,String> chr2 : secondMap.entrySet()) {
                if (chr1.getValue().equals(chr2.getValue())) {
                    output.add(String.valueOf(chr1.getValue()));
                } else {
                    output.add(String.valueOf(chr1.getValue())
                            + String.valueOf(chr2.getValue()));
                }
            }
        }

        return output;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...