【问题标题】:Sorting boolean arrays by number of *true* values in Java在 Java 中按 *true* 值的数量对布尔数组进行排序
【发布时间】:2017-08-19 14:36:37
【问题描述】:

(我在处理 3.3.5)

我的代码生成许多相同长度的布尔数组 ( 8 )。 经过一些操作,我想按“真实”值的数量对这些数组进行排序。为了方便起见,我使用布尔数组;随意将它们视为 8 位数字,并按设置的位数对它们进行排序。也不允许重复。

最终我想以以下方式显示这些数组:

具有单个真值的所有数组:Array1、Array2、Array3、Array4 ...

所有具有两个真值的数组:Array1, Array2, Array3, Array4 ...

所有具有三个真值的数组:Array1, Array2, Array3, Array4 ...

所有具有四个真值的数组:Array1, Array2, Array3, Array4 ...

...

....

我现在做的(非工作)方式是通过一个 3D 布尔数组(假设你得到一个特定的索引 - 在我想要排序的布尔数组中 - 通过坐标 [x][ y][z])

x 是列,y 是行,z 是 .length 8 布尔数组的索引

(0.检查我现在要排序的数组是否已经有重复)

  1. 获取真值的数量(y位置)

  2. 遍历 x 个位置:

  3. 检查 [x][y][0 到 7] 是否为空,如果为真:在这些位置写入数组。 (如果不是:转到下一个 x 位置)

(我使用 2 个函数来执行此操作:hasEqual 和 findEmpty,如果您对未注释的代码感兴趣...这里:https://gist.github.com/anonymous/83fa90fdaacbeffb8ecc3d5c5a513890(为畏缩做准备))

任何帮助将不胜感激! 可以是伪代码,也可以只是想法/概念!

【问题讨论】:

    标签: java sorting multidimensional-array


    【解决方案1】:

    您可以通过结合使用 Stream API 的 sorted() 方法和 Comparator.comparing(arr -> getNumberOfTrueValues(arr)) 轻松做到这一点

    【讨论】:

    • 谢谢,我现在用谷歌搜索了一些关于流的信息。
    猜你喜欢
    • 2021-10-13
    • 2023-01-25
    • 2021-07-01
    • 2010-10-28
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多