首页 > 解决方案 > 不兼容的类型需要找到的对象条目

问题描述

我想打印字符串的所有排列而不递归。它会在和处生成错误不兼容类型所需的对象找到条目。我该如何解决这个问题请帮助!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;
        }

标签: java

解决方案


由于firstMap's 的类型是原始类型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;
    }

推荐阅读