You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何泛化仅一元运算符不同的加密解密方法?并实现流处理

密码加解密方法的泛化与流处理实现

一、泛化重复逻辑

原两个方法的核心差异仅在于对每个字符的操作:加密是字符值加1,解密是字符值减1。可以把这个字符操作抽成独立的逻辑单元,通过参数传递给一个通用方法,彻底避免代码重复。

Java里直接用内置的IntUnaryOperator函数式接口即可(char会自动转成int处理),同时把原代码中效率极低的String.concat()替换成StringBuilder(String不可变,循环拼接会生成大量临时对象):

// 通用的字符转换方法
private static String transformPassword(String input, IntUnaryOperator charOperator) {
    StringBuilder result = new StringBuilder();
    for (char c : input.toCharArray()) {
        result.append((char) charOperator.applyAsInt(c));
    }
    return result.toString();
}

// 加密方法复用通用逻辑
private static String encryptPassword(String password) {
    return transformPassword(password, i -> i + 1);
}

// 解密方法复用通用逻辑
private static String decryptPassword(String encryptedPassword) {
    return transformPassword(encryptedPassword, i -> i - 1);
}

二、用流处理替代循环

Java 8及以上的Stream API可以简化循环逻辑,直接对字符串的字符流进行链式处理:

高性能的流处理实现

private static String transformPasswordWithStream(String input, IntUnaryOperator charOperator) {
    return input.chars()
            .map(charOperator) // 对每个字符的码值应用操作
            .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
            .toString();
}

// 加密和解密方法直接调用通用流方法
private static String encryptPassword(String password) {
    return transformPasswordWithStream(password, i -> i + 1);
}

private static String decryptPassword(String encryptedPassword) {
    return transformPasswordWithStream(encryptedPassword, i -> i - 1);
}

流处理步骤说明

  • input.chars():将字符串转换为IntStream,每个元素是字符对应的ASCII/Unicode码值
  • map(charOperator):对每个码值执行加密/解密的加减操作
  • collect(...):直接用StringBuilder收集处理后的码值,避免生成临时String对象,性能最优

如果追求代码简洁,也可以用更直观的写法(性能略逊于上面的版本):

private static String transformPasswordWithStream(String input, IntUnaryOperator charOperator) {
    return input.chars()
            .map(charOperator)
            .mapToObj(c -> String.valueOf((char) c))
            .collect(Collectors.joining());
}

内容的提问来源于stack exchange,提问作者Uvuvwevwevwevwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:45:30