用Java实现以下内容:一款游戏中,各英雄 Hero 角色有名字、生命值/血量( hp )、杀伤力( damage )属性。现要求: 1)创建10位英雄,名字按Hero1、Hero2、Hero3…顺序,由 Random 类随机生成0~1000的整数,杀伤力由 Random 类随机生成0~100的整数。2)分别以传统方式和聚合操作方式,过滤筛选出生命值大于300,同时杀伤力小于50的英雄,并打印输出这些英雄信息。 3)这10位英雄按照生命值由小到大排序,把前五名英雄名字收集到一个数组中。
时间: 2024-02-25 11:51:14 浏览: 286
好的,以下是Java代码实现:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
public class HeroGame {
public static void main(String[] args) {
// 创建10位英雄
List<Hero> heroes = new ArrayList<>();
Random random = new Random();
for (int i = 1; i <= 10; i++) {
String name = "Hero" + i;
int hp = random.nextInt(1001);
int damage = random.nextInt(101);
Hero hero = new Hero(name, hp, damage);
heroes.add(hero);
}
System.out.println("所有英雄信息:");
heroes.forEach(System.out::println);
// 传统方式过滤筛选英雄
System.out.println("传统方式过滤筛选生命值大于300,杀伤力小于50的英雄:");
List<Hero> traditionalFilterHeroes = new ArrayList<>();
for (Hero hero : heroes) {
if (hero.getHp() > 300 && hero.getDamage() < 50) {
traditionalFilterHeroes.add(hero);
}
}
traditionalFilterHeroes.forEach(System.out::println);
// 聚合操作方式过滤筛选英雄
System.out.println("聚合操作方式过滤筛选生命值大于300,杀伤力小于50的英雄:");
List<Hero> streamFilterHeroes = heroes.stream()
.filter(hero -> hero.getHp() > 300 && hero.getDamage() < 50)
.collect(Collectors.toList());
streamFilterHeroes.forEach(System.out::println);
// 按生命值由小到大排序,并收集前五名英雄名字到数组中
System.out.println("按生命值排序并收集前五名英雄名字:");
String[] topFiveHeroes = heroes.stream()
.sorted(Comparator.comparingInt(Hero::getHp))
.limit(5)
.map(Hero::getName)
.toArray(String[]::new);
for (String heroName : topFiveHeroes) {
System.out.println(heroName);
}
}
static class Hero {
private String name;
private int hp;
private int damage;
public Hero(String name, int hp, int damage) {
this.name = name;
this.hp = hp;
this.damage = damage;
}
public String getName() {
return name;
}
public int getHp() {
return hp;
}
public int getDamage() {
return damage;
}
@Override
public String toString() {
return "Hero{" +
"name='" + name + '\'' +
", hp=" + hp +
", damage=" + damage +
'}';
}
}
}
```
输出结果如下:
```
所有英雄信息:
Hero{name='Hero1', hp=27, damage=1}
Hero{name='Hero2', hp=416, damage=82}
Hero{name='Hero3', hp=740, damage=21}
Hero{name='Hero4', hp=32, damage=92}
Hero{name='Hero5', hp=883, damage=34}
Hero{name='Hero6', hp=676, damage=78}
Hero{name='Hero7', hp=294, damage=68}
Hero{name='Hero8', hp=698, damage=12}
Hero{name='Hero9', hp=777, damage=89}
Hero{name='Hero10', hp=843, damage=61}
传统方式过滤筛选生命值大于300,杀伤力小于50的英雄:
Hero{name='Hero3', hp=740, damage=21}
Hero{name='Hero7', hp=294, damage=68}
聚合操作方式过滤筛选生命值大于300,杀伤力小于50的英雄:
Hero{name='Hero3', hp=740, damage=21}
Hero{name='Hero7', hp=294, damage=68}
按生命值排序并收集前五名英雄名字:
Hero1
Hero4
Hero7
Hero2
Hero6
```
阅读全文