Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对两个对象数组列表进行排序?_Java_Sorting_Object_Arraylist - Fatal编程技术网

Java 如何对两个对象数组列表进行排序?

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

到目前为止,一个游戏我需要两个排序对象数组列表(房间。敌人)的速度属性和球员对象的速度属性,这样我就可以知道我需要运行的攻击方法的顺序

例如,在room.friends数组中,我有一个地精(速度10)蜘蛛(速度8)地精(速度10),玩家的速度为12,我希望首先从玩家那里执行攻击敌人,然后执行攻击玩家方法三次(地精,地精,地精)

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());