Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按顺序简化方向数组{“南”、“东”等? 公共静态字符串[]dirreduce(字符串[]arr){ 列表对象=数组.asList(arr); long northCount=(objects.contains(“NORTH”)?objects.stream().filter(“NORTH”)::contains.count():0; long southCount=(objects.contains(“SOUTH”)?objects.stream().filter(“SOUTH”)::contains.count():0; long eastCount=(objects.contains(“EAST”)?objects.stream().filter(“EAST”)::contains.count():0; long westCount=(objects.contains(“WEST”)?objects.stream().filter(“WEST”)::contains.count():0; Map doubleBraceMap=新HashMap(){{ put(“NORTH”,long)((northCount>=southCount)?(northCount-southCount):0); put(“SOUTH”,(long)((southCount>=northCount)?(southCount-northCount):0); put(“东”,长)((东计数>=西计数)?(东计数-西计数):0); put(“西”,长)((西计数>=东计数)?(西计数-东计数):0); }}; List formattedArray=新建ArrayList(); doubleBraceMap.keySet().forEach(键->{ for(int i=0;i_Java_Arrays_List_Algorithm_Sorting - Fatal编程技术网

Java 如何按顺序简化方向数组{“南”、“东”等? 公共静态字符串[]dirreduce(字符串[]arr){ 列表对象=数组.asList(arr); long northCount=(objects.contains(“NORTH”)?objects.stream().filter(“NORTH”)::contains.count():0; long southCount=(objects.contains(“SOUTH”)?objects.stream().filter(“SOUTH”)::contains.count():0; long eastCount=(objects.contains(“EAST”)?objects.stream().filter(“EAST”)::contains.count():0; long westCount=(objects.contains(“WEST”)?objects.stream().filter(“WEST”)::contains.count():0; Map doubleBraceMap=新HashMap(){{ put(“NORTH”,long)((northCount>=southCount)?(northCount-southCount):0); put(“SOUTH”,(long)((southCount>=northCount)?(southCount-northCount):0); put(“东”,长)((东计数>=西计数)?(东计数-西计数):0); put(“西”,长)((西计数>=东计数)?(西计数-东计数):0); }}; List formattedArray=新建ArrayList(); doubleBraceMap.keySet().forEach(键->{ for(int i=0;i

Java 如何按顺序简化方向数组{“南”、“东”等? 公共静态字符串[]dirreduce(字符串[]arr){ 列表对象=数组.asList(arr); long northCount=(objects.contains(“NORTH”)?objects.stream().filter(“NORTH”)::contains.count():0; long southCount=(objects.contains(“SOUTH”)?objects.stream().filter(“SOUTH”)::contains.count():0; long eastCount=(objects.contains(“EAST”)?objects.stream().filter(“EAST”)::contains.count():0; long westCount=(objects.contains(“WEST”)?objects.stream().filter(“WEST”)::contains.count():0; Map doubleBraceMap=新HashMap(){{ put(“NORTH”,long)((northCount>=southCount)?(northCount-southCount):0); put(“SOUTH”,(long)((southCount>=northCount)?(southCount-northCount):0); put(“东”,长)((东计数>=西计数)?(东计数-西计数):0); put(“西”,长)((西计数>=东计数)?(西计数-东计数):0); }}; List formattedArray=新建ArrayList(); doubleBraceMap.keySet().forEach(键->{ for(int i=0;i,java,arrays,list,algorithm,sorting,Java,Arrays,List,Algorithm,Sorting,上面的代码简化了位置,但没有顺序,因为元素的位置不会改变,只是冗余的运动会改变,例如{“南”,“北”,“东”}变成“东”,因为南和北相互抵消,我上面的算法不看位置,它只是通过计算南的数量来简化它,诺斯等,然后做一些基础数学。PS,如果可能的话,我希望这个问题在没有嵌套循环的情况下得到解决 问题, 编写一个函数dirReduc,它将接受一个字符串数组并返回一个字符串数组,其中删除了不必要的方向(WE或SN并排)。认真地说,每个循环都使用一个普通的old: public static Str

上面的代码简化了位置,但没有顺序,因为元素的位置不会改变,只是冗余的运动会改变,例如{“南”,“北”,“东”}变成“东”,因为南和北相互抵消,我上面的算法不看位置,它只是通过计算南的数量来简化它,诺斯等,然后做一些基础数学。PS,如果可能的话,我希望这个问题在没有嵌套循环的情况下得到解决

问题
编写一个函数dirReduc,它将接受一个字符串数组并返回一个字符串数组,其中删除了不必要的方向(WE或SN并排)。

认真地说,每个循环都使用一个普通的old:

    public static String[] dirReduc(String[] arr) {

        List<String> objects = Arrays.asList(arr);

        long northCount = (objects.contains("NORTH")) ? objects.stream().filter("NORTH"::contains).count() : 0;
        long southCount = (objects.contains("SOUTH")) ? objects.stream().filter("SOUTH"::contains).count() : 0;
        long eastCount = (objects.contains("EAST")) ? objects.stream().filter("EAST"::contains).count() : 0;
        long westCount = (objects.contains("WEST")) ? objects.stream().filter("WEST"::contains).count() : 0;

        Map<String, Long> doubleBraceMap  = new HashMap<String, Long>() {{
            put("NORTH", (long)((northCount >= southCount) ? (northCount - southCount) : 0));
            put("SOUTH", (long)((southCount >= northCount) ? (southCount - northCount) : 0));
            put("EAST", (long)((eastCount >= westCount) ? (eastCount - westCount) : 0));
            put("WEST", (long)((westCount >= eastCount) ? (westCount - eastCount) : 0));
        }};

        List<String> formattedArray = new ArrayList<String>();

        doubleBraceMap.keySet().forEach(key ->{

            for(int i = 0; i < doubleBraceMap.get(key); i++) {
                formattedArray.add(key);
            }

        });

        return formattedArray.toArray(new String[0]);
    }

这里不必太花哨。

认真地说,每个循环使用一个普通的旧循环:

    public static String[] dirReduc(String[] arr) {

        List<String> objects = Arrays.asList(arr);

        long northCount = (objects.contains("NORTH")) ? objects.stream().filter("NORTH"::contains).count() : 0;
        long southCount = (objects.contains("SOUTH")) ? objects.stream().filter("SOUTH"::contains).count() : 0;
        long eastCount = (objects.contains("EAST")) ? objects.stream().filter("EAST"::contains).count() : 0;
        long westCount = (objects.contains("WEST")) ? objects.stream().filter("WEST"::contains).count() : 0;

        Map<String, Long> doubleBraceMap  = new HashMap<String, Long>() {{
            put("NORTH", (long)((northCount >= southCount) ? (northCount - southCount) : 0));
            put("SOUTH", (long)((southCount >= northCount) ? (southCount - northCount) : 0));
            put("EAST", (long)((eastCount >= westCount) ? (eastCount - westCount) : 0));
            put("WEST", (long)((westCount >= eastCount) ? (westCount - eastCount) : 0));
        }};

        List<String> formattedArray = new ArrayList<String>();

        doubleBraceMap.keySet().forEach(key ->{

            for(int i = 0; i < doubleBraceMap.get(key); i++) {
                formattedArray.add(key);
            }

        });

        return formattedArray.toArray(new String[0]);
    }

不需要在这里花心思。

objects.stream().collect(Collectors.groupingBy(Function.identity(),Collectors.counting())东南-北是否也简化为“东”?感谢您的回复@JohannesKuhn,但您能解释一下代码行的作用吗?@Joni是的东南-北将简化为东,本质上是为了简化它。您除了“如何解决此问题”之外,没有问过其他问题,您的需求是不明确的。您需要向我们展示一些示例:示例输入、示例输出,并解释将输入转换为输出的规则。如果您的程序没有提供预期的输出,请向我们显示它提供的输出。
objects.stream().collect(Collectors.groupingBy(Function.identity(),Collectors.counting())东南-北是否也简化为“东”?感谢您的回复@JohannesKuhn,但您能解释一下代码行的作用吗?@Joni是的东南-北将简化为东,本质上是为了简化它。您除了“如何解决此问题”之外,没有问过其他问题,您的需求是不明确的。您需要向我们展示一些示例:示例输入、示例输出,并解释将输入转换为输出的规则。如果你的程序没有给你预期的输出,给我们看看它的输出。遗憾的是,它没有给我所需要的结果。为什么不呢?它的功能与代码的功能相同。您确定可以将
东北-南
简化为
东部
?另外,您使用的是什么java版本?(这使用了箭头标签,这在Java14中是新的)好吧,对于这个特殊的问题,我使用Java8。遗憾的是,它没有给我所需的结果。为什么不呢?它的功能与代码的功能相同。您确定可以将
东北-南
简化为
东部
?另外,您使用的是什么java版本?(这使用了箭头标签,这在Java14中是新的)对于这个特殊的问题,我使用Java8。