首页 > 解决方案 > 游戏。字符串的顺序数组

问题描述

声明 游戏包括对他们给你的元素进行排序。总共有 8 个元素和 2 个孔。

您必须对它和无序数组匹配任何可能选项时的方法进行排序。

唯一的限制是您必须按 2 对 2 进行排序,也就是说,在每次迭代中,您必须同时移动两个元素。

我的代码:

boolean  truee;
    ArrayList<String> array = new ArrayList<String>(10);
    array.add(0, "A");
    array.add(1, "B");
    array.add(2, "A");
    array.add(3, "B");
    array.add(4, "A");
    array.add(5, "B");
    array.add(6, "A");
    array.add(7, "B");
    array.add(8, null);
    array.add(9, null);

    System.out.print(array);
}

private static ArrayList<String> order(ArrayList<String> array) {
    boolean istrue = true;
    
    //...States
    do {
        
    }while(istrue);
    
    return array;
}

我真的不知道如何制作函数以便它对数组进行排序。

this solution over paper.
A B A B A B A B 0 0
A 0 0 B A B A B B A
A A B B 0 0 A B B A
A A B B B B A 0 0 A
0 0 B B B B A A A A

标签: java

解决方案


在这种情况下,您可以从java.util.Comparator课程中受益。要按照您想要的方式对其进行排序,首先您必须使用以下函数处理空值: Comparator.nullsFirst(...)- 它将空值移动到列表的第一个位置。但它会给你一个自然的顺序。您的预期结果需要恢复,因此下一步将是使用该Comparator.reverseOrder()功能 - 它会使“B”站在“A”之前。要使用所描述的运算符,请调用sort列表中的方法。

示例用法:

list.sort(Comparator.nullsFirst(Comparator.reverseOrder()));

推荐阅读