【问题标题】:How does one satisfy a predicate with a boolean condition如何满足具有布尔条件的谓词
【发布时间】:2020-11-30 05:43:34
【问题描述】:

我正在尝试遍历列表以满足布尔条件,然后最终将其附加到数组中。我不确定是否有另一种方法可以做到这一点,但我完全陷入困境,无法真正找到关于我的问题的任何信息。这是代码的sn-p:

所以我想要做的是说如果isCryDamagetrue 对于任何entities 我想将BlockPos 附加到filteredPositions。我会知道如何在 py 中做到这一点,但我真的不知道在 Java 中这个谓词业务发生了什么。目前它的说法 CrystalUtils.GetPlayerPosFloored(entity)) 需要是谓词类型。

List<EntityPlayer> entities = mc.world.playerEntities;
List<BlockPos> sufficientBlocks = CrystalUtils.findCrystalBlocks((int) range.getValDouble());
List<BlockPos> filteredPositions = new ArrayList<>();
for (EntityPlayer entity : entities) {
    sufficientBlocks.stream().filter(isCryDamageSufficient(CrystalUtils.GetPlayerPosFloored(entity))).forEach(filteredPositions::add);
}

public static boolean isCryDamageSufficient(final BlockPos enemy){
    return calculateDamage(enemy.getX(), enemy.getY(), enemy.getZ(), mc.player) > minDam.getValDouble();
}

【问题讨论】:

    标签: java predicate


    【解决方案1】:

    过滤方法(Stream&lt;T&gt; filter(Predicate&lt;? super T&gt; predicate);)需要一个Predicate作为参数,尝试修改你的循环代码如下:

    for (EntityPlayer entity : entities) {
        sufficientBlocks.stream().filter(blockPos -> isCryDamageSufficient(blockPos)).forEach(filteredPositions::add);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-18
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多