从具有最高值的arraylist返回对象?

Wan*_*een 3 java return arraylist object

我试图从一个arraylist返回一个对象,它包含不同的对手为我的基于文本的格斗游戏.arraylist中的对手有不同的"致命等级",将一个轻松的对手从一个强硬的对手中分离出来.

以不同的方式解释它; 假设我的arraylist中有三个对手,他们分别有30,40和50的致命等级.我想要归还其中最致命的一个,所以这将是一个致命等级为50的对手.

我已经给了他们不同的致命等级,但我不知道如何让那些具有最高致命等级的对手回归.

Cra*_*lin 6

如果你想要最高级别,那就是max().但是你想要最高级别的对手.在Eclipse Collections中,我们称之为模式maxBy().如果你可以替换你ArrayListMutableList那么它变成:

MutableList<Opponent> opponents = ...;
Opponent opponent = opponents.maxBy(Opponent::getDeadlyLevel);
Run Code Online (Sandbox Code Playgroud)

如果您不能或不会转换ArrayList,您仍然可以使用静态实用程序Iterate.

Opponent opponent = Iterate.maxBy(opponents, Opponent::getDeadlyLevel);
Run Code Online (Sandbox Code Playgroud)

你可以用Collections.max()Comparator.comparing()来构建Comparator.

Opponent opponent =
    Collections.max(opponents, Comparator.comparing(Opponent::getDeadlyLevel));
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Java 8 Streams.

Optional<Opponent> optionalOpponent = 
    opponents.stream().max(Comparator.comparing(Opponent::getDeadlyLevel));
Opponent opponent = optionalOpponent.get(); // If you're sure there's at least one
Run Code Online (Sandbox Code Playgroud)

注意:我是Eclipse Collections的提交者.