我试图遍历一个列表来满足一个布尔条件,然后最后将其附加到一个数组中。我真的不确定是否有其他方法可以做到这一点,但我完全卡住了,找不到任何关于我的问题。下面是代码片段:
所以我想说如果 isCryDamage
是 true
对于任何一个 entities
我想附加这个 BlockPos
至 filteredPositions
. 我知道如何在py中做到这一点,但我不知道java中如何处理这个 predicate 业务。目前它的说法是 CrystalUtils.GetPlayerPosFloored(entity))
必须是 predicate 类型。
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();
}
1条答案
按热度按时间sbtkgmzw1#
过滤法(
Stream<T> filter(Predicate<? super T> predicate);
)需要一个Predicate
作为参数,请尝试修改循环代码,如下所示: