Java 有没有办法将arraylist中的整数相加?

Java 有没有办法将arraylist中的整数相加?,java,Java,我尝试将arraylist中的整数相加,以便让用户看到有多少人排队等待1v1。这是我的代码:` 包me.sub.cpracce.Queue Main plugin; public JoinQueue(Main plugin) { this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) { if

我尝试将arraylist中的整数相加,以便让用户看到有多少人排队等待1v1。这是我的代码:` 包me.sub.cpracce.Queue

Main plugin;

public JoinQueue(Main plugin) {
    this.plugin = plugin;
}


@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
    if (cmd.getName().equalsIgnoreCase("queuetest")) {
        Player p = (Player) sender;
        new BukkitRunnable() {
            @Override
            public void run() {
                if (plugin.inqueue.contains(p)) {   
                    String replaced = PlaceholderAPI.setPlaceholders(p, "%server_online%");
                    ScoreHelper helper = ScoreHelper.createScore(p);
                    helper.setTitle("&6&lGoldHQ &r&7┃ &rPractice");
                    helper.setSlot(8, "&7&m---------------------");
                    helper.setSlot(7, "&eOnline: &f" + replaced);
                    helper.setSlot(6, "&eIn Fights: &f" + plugin.infightnumber.toString().replace("[", "").replace("]", ""));
                    helper.setSlot(5, "&7&m---------------------");
                    helper.setSlot(4, "&eQueued For: &fNoDebuff");
                    helper.setSlot(3, "" + plugin.inqueuenumber.toString().replace("[", "").replace("]", ""));
                    helper.setSlot(2, "&7&ogoldhq.net");
                    helper.setSlot(1, "&7&m---------------------");
                }
            }
        }.runTaskTimer(plugin, 20L, 20L);
    }
    return false;
}
`
我已经在这个问题上纠缠了好几个小时了,但我还没有找到任何有效的方法。当我希望它显示为2时,它显示为1。有什么帮助吗?

首先,您的问题根本不包含
ArrayList
。我猜你的问题出在第一线:

helper.setSlot(3, "" + plugin.inqueuenumber.toString().replace("[", "").replace("]", ""));
您可以使用以下代码将该号码合并在一起:

helper.setSlot(3, "" + Arrays.stream(plugin.inqueuenumber.toString()
        .replace("[", "")
        .replace("]", "")
        .split(",")
    ).map(Integer::parseInt)
    .reduce(0, (subtotal, current) -> subtotal + current)
)
编辑:我注意到,
plugin.inqueuenumber
是您一直在谈论的
ArrayList
,所以下面的方法也应该有效,前面的解决方案是多余的:

helper.setSlot(3, "" + plugin.inqueuenumber.stream().reduce(0, (l, r) -> l + r))

提示:可以使用
mapToInt
代替
map
,然后调用
sum()
而不是
reduce
,比如:
.mapToInt(Integer::parseInt).sum()
不错的提示,没有想到这一点,但如前所述,因为他已经在
ArrayList
中存储了数字,所以不需要处理数字字符串
sum()
方法在第二种情况下也更合适。