有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在本例中,如何使用streams或lambda而不是for循环?

如果可能的话,我想用streams重写这个函数

public void onTransfer(TransferEvent event) {

    StringBuilder builder = new StringBuilder();
    for (Object item : event.getItems()) {
        Permission perm = Permission.valueOf((String) item);

        try {
            if (event.isAdd()) {
                currentRole.add(perm);
            } else {
                currentRole.remove(perm);
            }
        } catch (Exception e) {
            addErrorMessage("", e.getLocalizedMessage());
            LOGGER.error(e.getMessage(), e);
        }
        builder.append(perm.name()).append(";");
    }

    addMessage("", "Transfered permissions " + builder.toString() + " from/to role :" + currentRole.getName());
}

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    将其重写为流函数将如下所示:

    event.getItems().stream()
        .map(item -> Permission.valueOf((String) item))
        .forEach(perm -> {try-clause})
    addMessage(event.getItems().stream()
        .map(item -> Permission.valueOf((String) item).name())
        .collect(Collectors.joining(";", "Transfered permissions ", " from/to role :" + currentRole.getName()));