Java 如何对两个对象数组列表进行排序?
到目前为止,一个游戏我需要两个排序对象数组列表(房间。敌人)的速度属性和球员对象的速度属性,这样我就可以知道我需要运行的攻击方法的顺序 例如,在room.friends数组中,我有一个地精(速度10)蜘蛛(速度8)地精(速度10),玩家的速度为12,我希望首先从玩家那里执行攻击敌人,然后执行攻击玩家方法三次(地精,地精,地精)Java 如何对两个对象数组列表进行排序?,java,sorting,object,arraylist,Java,Sorting,Object,Arraylist,到目前为止,一个游戏我需要两个排序对象数组列表(房间。敌人)的速度属性和球员对象的速度属性,这样我就可以知道我需要运行的攻击方法的顺序 例如,在room.friends数组中,我有一个地精(速度10)蜘蛛(速度8)地精(速度10),玩家的速度为12,我希望首先从玩家那里执行攻击敌人,然后执行攻击玩家方法三次(地精,地精,地精) import java.util.Random; 公开阶级斗争{ 私人布尔攻击玩家(玩家,敌方){ int-edamage=0; int eamplifier=敌方.ge
import java.util.Random;
公开阶级斗争{
私人布尔攻击玩家(玩家,敌方){
int-edamage=0;
int eamplifier=敌方.getDamage()-player.getdefence();
随机骰子=新随机();
for(inti=1;i<敌方.getAgility();i++){
edamage+=骰子下一个骰子(10)+eamplifier;
}
如果(edamage<0){
edamage=0;
}
返回玩家。受到伤害(电子法师);
}
私人布尔攻击敌人(玩家,敌人){
int损害=0;
智力放大器=玩家.getDamage()-敌人.getdefence();
随机骰子=新随机();
for(inti=1;i
如果您使用的是Java 8或更高版本(我希望是)。
您可以将方便的比较器与流API一起使用
如下所示:
ArrayList<String> list = new ArrayList(....);
list.sort(Comparator.comparing(Enemy::getSpeed)
.thenComparing(Enemy::someOtherProperty));
ArrayList list=新的ArrayList(..);
list.sort(Comparator.comparing(敌人::getSpeed)
.然后比较(敌人::其他财产);
或者仅使用流API:
List<String> sortedBySpeed = list.stream()
.sorted(Comparator.comparing(Enemy::getSpeed))
.collect(Collectors.toList());
List sortedBySpeed=List.stream()
.排序(比较器.比较(敌人::getSpeed))
.collect(Collectors.toList());
你有一个列表,上面有排序的敌人
sortedBySpeed
会帮你的。然后,如果你有一个特定的问题,张贴你使用的排序代码和你的问题。谢谢代码中的敌人列表在哪里?另外,在你的解释中,有两个地精,一个蜘蛛和一个玩家。但是你的攻击计划是玩家然后是3个地精。第三个妖精出现在哪里?可能是@JamiSaueressig的复制品。你的问题解决了吗?
List<String> sortedBySpeed = list.stream()
.sorted(Comparator.comparing(Enemy::getSpeed))
.collect(Collectors.toList());