×
¥
查看详情
🔥 会员专享 文生文 代码生成

Java流操作代码生成器

👁️ 74 次查看
📅 Dec 6, 2025
💡 核心价值: 本提示词专为Java开发场景设计,能够根据具体业务需求生成高质量的Java流操作代码。通过分析用户提供的场景描述,自动识别数据处理需求,生成符合Java开发规范的流式操作代码,包含完整的类型推断、方法链式调用和异常处理机制。特别适用于集合数据处理、数据转换、筛选过滤等常见开发场景,帮助开发者快速实现函数式编程解决方案。

🎯 可自定义参数(4个)

场景描述
具体的业务场景描述,说明需要处理的数据和期望的操作
数据源类型
数据源的类型描述,如列表、数组、集合等
主要操作
主要的流操作类型,如筛选、映射、排序、聚合等
输出要求
期望的输出结果描述

🎨 效果示例

场景分析

  • 数据源:List,包含移动端用户评论
  • 清洗目标:
    • 去首尾空白
    • 剔除 URL(http/https、www 开头)
    • 剔除表情符号(Emoji,包括 ZWJ/变体选择符)
    • 合并多余空白并统一小写
    • 过滤长度不在 [5, 120] 的评论(按 Unicode 码点长度)
    • 去重(清洗与小写统一后再去重)
    • 排序(先按长度升序,再按字典序)
  • 异常/边界:空集合、null 元素、全被清空后的内容、只含 URL/Emoji 的评论等需兜底处理

代码实现

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

/**
 * 评论清洗与排序工具。
 * 特点:
 *  - 线程安全(正则 Pattern 为不可变单例)
 *  - JDK 8+ 兼容(不使用 String#isBlank / Stream#toList 等 11/16+ API)
 */
public final class CommentCleaner {

    private CommentCleaner() {}

    // 简化的 URL 模式:匹配 http(s):// 或 www. 开头直到下一个空白
    // 说明:\S+ 可以覆盖绝大多数 URL 形式(含短链 / 查询串 / 哈希等)
    private static final Pattern URL_PATTERN =
            Pattern.compile("(?i)\\b(?:https?://|www\\.)\\S+");

    // 合并多余空白(包括制表符和换行)为单个空格
    private static final Pattern WHITESPACE_PATTERN =
            Pattern.compile("\\s+");

    // 长度边界(按码点数计算)
    private static final int MIN_LEN = 5;
    private static final int MAX_LEN = 120;

    /**
     * 对评论列表进行清洗、去重与排序。
     * @param rawComments 原始评论列表(可为 null,允许包含 null 元素)
     * @return 清洗后的评论列表(不可为 null)
     */
    public static List<String> cleanComments(List<String> rawComments) {
        if (rawComments == null || rawComments.isEmpty()) {
            return Collections.emptyList();
        }

        return rawComments.stream()
                .filter(Objects::nonNull)                    // 兜底:跳过 null 元素
                .map(CommentCleaner::normalize)              // 去空白、去 URL、去表情、合并空白、小写
                .filter(s -> !s.isEmpty())                   // 清洗后仍需非空
                .filter(CommentCleaner::withinLength)        // 长度在 [5, 120](码点)
                .distinct()                                  // 去重(已小写统一)
                .sorted(Comparator
                        .comparingInt(CommentCleaner::codePointLength) // 长度升序
                        .thenComparing(Comparator.naturalOrder())      // 再按字典序
                )
                .collect(Collectors.toList());
    }

    // 单条文本的清洗逻辑(可复用/单测)
    static String normalize(String text) {
        String s = text.trim();
        if (s.isEmpty()) return s;

        // 1) 去 URL
        s = URL_PATTERN.matcher(s).replaceAll(" ");

        // 2) 去 Emoji(包括 ZWJ/变体选择符)
        s = removeEmojis(s);

        // 3) 合并多余空白并去首尾空白
        s = WHITESPACE_PATTERN.matcher(s).replaceAll(" ").trim();

        // 4) 小写统一(使用 ROOT 保证可重现性)
        s = s.toLowerCase(Locale.ROOT);

        return s;
    }

    // 过滤掉 Emoji 相关码点(按 UnicodeBlock + 特殊连接符/变体选择符)
    static String removeEmojis(String input) {
        if (input.isEmpty()) return input;

        StringBuilder sb = new StringBuilder(input.length());
        input.codePoints().forEach(cp -> {
            if (!isEmojiCodePoint(cp)) {
                sb.appendCodePoint(cp);
            }
        });
        return sb.toString();
    }

    // 按 Unicode 块与特殊码点判断是否为 Emoji 相关
    private static boolean isEmojiCodePoint(int cp) {
        // Zero Width Joiner(用于组合 emoji)
        if (cp == 0x200D) return true;
        // 变体选择符(常用于 emoji 彩色变体)
        if (cp == 0xFE0F) return true;

        Character.UnicodeBlock block = Character.UnicodeBlock.of(cp);
        if (block == null) return false;

        // 按名称判断,避免直接引用潜在的高版本常量,提升 JDK 兼容性
        String name = block.toString();
        switch (name) {
            case "EMOTICONS":
            case "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS":
            case "TRANSPORT_AND_MAP_SYMBOLS":
            case "SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS":
            case "SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A":          // 高版本可能存在
            case "SYMBOLS_FOR_LEGACY_COMPUTING":                // 高版本可能存在
            case "DINGBATS":
            case "VARIATION_SELECTORS":
            case "VARIATION_SELECTORS_SUPPLEMENT":               // 高版本可能存在
                return true;
            default:
                return false;
        }
    }

    // 码点长度(支持多语言,避免 surrogate 误差)
    static int codePointLength(String s) {
        return s.codePointCount(0, s.length());
    }

    // 长度判定(包含边界)
    static boolean withinLength(String s) {
        int len = codePointLength(s);
        return len >= MIN_LEN && len <= MAX_LEN;
    }

    // 便捷示例(可删除)
    public static void main(String[] args) {
        List<String> raw = new ArrayList<>();
        raw.add("  超级好用!!!  ");
        raw.add("快来看👉 https://example.com/deal?id=123#top  ");
        raw.add("性价比高😄,还会再买");
        raw.add("性价比高😄,还会再买"); // 重复
        raw.add("WWW.Test.COM/a/b ");
        raw.add("短");
        raw.add("THIS is GREAT!!!");
        raw.add("This is great!!! "); // 与上方大小写不同,清洗后会合并
        raw.add("    ");
        raw.add("🚗🚕🚙 车子不错");
        raw.add("五星好评!!!👍👍");

        List<String> clean = CommentCleaner.cleanComments(raw);
        clean.forEach(System.out::println);
    }
}

代码说明

  • 数据源与中间操作
    • filter(Objects::nonNull):剔除 null 元素,避免后续 NPE
    • map(CommentCleaner::normalize):核心清洗步骤
      • URL_PATTERN:(?i)\b(?:https?://|www.)\S+
        • (?i) 忽略大小写
        • \b 单词边界,有助于避免误删
        • \S+ 匹配到下一个空白,能覆盖短链接、带参数、带锚点等 URL 形式
      • removeEmojis:按 UnicodeBlock + 特殊码点去 Emoji
        • 识别 EMOTICONS、MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS、TRANSPORT_AND_MAP_SYMBOLS、SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS、DINGBATS 等块
        • 同时去除 ZWJ(0x200D) 与变体选择符(0xFE0F),避免残留不可见连接符
      • 合并空白:将多空白压缩为单空格,最后 trim
      • Locale.ROOT:小写转换使用 ROOT,避免因地区差异产生不一致
    • filter(!s.isEmpty()):清洗后仍需非空
    • filter(withinLength):使用 codePointCount 计算 Unicode 码点长度,确保中日韩/表情等多字节字符计算正确
  • 去重与排序
    • distinct():在小写化后去重,合并大小写混杂的重复评论
    • sorted(Comparator.comparingInt(codePointLength).thenComparing(naturalOrder())):
      • 首关键字:按码点长度升序
      • 次关键字:按字典序升序,保证同长度下稳定排序
  • 线程/性能
    • Pattern 为 static final,线程安全、可复用
    • 清洗逻辑为无副作用的纯函数,适合在服务端复用
    • 对大数据量若需进一步优化:
      • 可在排序前使用自定义容器缓存长度,避免重复计算
      • distinct 与 sorted 都依赖全量数据,通常不建议 parallel()

使用示例 输入:

  • [" 超级好用!!! ", "快来看👉 https://example.com/deal?id=123#top ", "性价比高😄,还会再买", "性价比高😄,还会再买", "WWW.Test.COM/a/b ", "短", "THIS is GREAT!!!", "This is great!!! ", " ", "🚗🚕🚙 车子不错", "五星好评!!!👍👍"]

清洗输出(示例,按长度与字典序排序后):

  • "短" 会被过滤(长度 < 5)
  • "www.test.com/a/b" 会被清空为 "" 再被过滤
  • 可能的输出:
    • "超级好用!!!"
    • "this is great!!!"
    • "五星好评!!!"
    • "车子不错"
    • "性价比高,还会再买"
    • "快来看"

注:实际输出以具体字符与码点长度计算为准(示例中的标点可能影响长度与排序)。


注意事项

  • 兼容性:代码在 JDK 8+ 可编译运行;Emoji 块名匹配通过字符串判断,避免引用新版本常量导致编译问题
  • 正则可调:
    • 如果需要更严格的 URL 识别,可替换为更完整的 RFC 风格模式,但要权衡性能
  • Emoji 识别边界:
    • 采用 UnicodeBlock 与特殊码点去除策略,已覆盖大多数常见 Emoji
    • 少量符号可能属于其他块,如需更激进,可以扩展判断逻辑(但可能会误删非 Emoji 符号)
  • 长度计算:
    • 使用 codePointCount,确保对多字节字符的长度判断准确
    • 如需以“去除标点后的字符长度”为准,可在 normalize 中增加标点过滤步骤
  • 排序稳定性:
    • 先按长度,再按字典序,保证输出可重现
  • 返回值:
    • 使用 Collectors.toList() 返回可变列表;如果需要不可变,可在最后包一层 Collections.unmodifiableList(...)
  • 空集合/空元素:
    • 输入 null 或空集合返回空列表;null 元素被忽略,不会抛异常

如需把长度边界、是否去除特定符号等做成可配置项,可将 MIN_LEN、MAX_LEN 与表情识别策略注入为参数或配置。

场景分析

  • 输入:站内文章标题 List,例如 ["Java Streams in Action", "Effective Java", ...]
  • 目标:分词(按非字母数字分隔)、统一小写、过滤停用词和长度<2的词,统计词频;按频次降序、词升序排序,取Top10;输出 LinkedHashMap<String, Long>
  • 需要考虑:空输入、停用词集合为空或为null的兜底;排序稳定且确定;性能与可读性

代码实现

import java.util.*;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class KeywordCounter {

    // 使用Unicode类别分词:非“字母或数字”的字符作为分隔符
    private static final Pattern NON_ALNUM_SPLITTER = Pattern.compile("[^\\p{L}\\p{N}]+");
    private static final int DEFAULT_TOP_N = 10;

    /**
     * 统计出现频次最高的关键词(Top N)。
     *
     * @param titles    文章标题列表,允许为null或空
     * @param stopWords 停用词集合,允许为null或空(将按小写匹配)
     * @param topN      需要返回的Top N,若<=0则使用默认值10
     * @return 按频次降序、词典序升序稳定排序的LinkedHashMap<String, Long>
     */
    public static LinkedHashMap<String, Long> topFrequentKeywords(
            List<String> titles,
            Set<String> stopWords,
            int topN
    ) {
        // 兜底:输入为空时直接返回空的LinkedHashMap
        if (titles == null || titles.isEmpty()) {
            return new LinkedHashMap<>();
        }

        // 兜底:停用词为null或空时,按空集合处理;并统一为小写以便匹配
        final Set<String> normalizedStopWords = (stopWords == null || stopWords.isEmpty())
                ? Collections.emptySet()
                : stopWords.stream()
                           .filter(Objects::nonNull)
                           .map(s -> s.toLowerCase(Locale.ROOT))
                           .collect(Collectors.toUnmodifiableSet());

        final int limit = topN > 0 ? topN : DEFAULT_TOP_N;

        // 1) 扁平化分词(flatMap)
        // 2) 统一小写
        // 3) 过滤空串、长度<2、停用词
        // 4) 分组计数(groupingBy + counting)
        Map<String, Long> frequency = titles.stream()
                .filter(Objects::nonNull)
                .flatMap(title -> Arrays.stream(NON_ALNUM_SPLITTER.split(title)))
                .map(token -> token.toLowerCase(Locale.ROOT))
                .filter(token -> !token.isBlank())
                .filter(token -> token.length() >= 2)
                .filter(token -> !normalizedStopWords.contains(token))
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        if (frequency.isEmpty()) {
            return new LinkedHashMap<>();
        }

        // 自定义比较器:先按频次降序,再按词典序升序,保证确定性与可读性
        Comparator<Map.Entry<String, Long>> byCountDescThenWordAsc =
                Comparator.<Map.Entry<String, Long>, Long>comparing(Map.Entry::getValue)
                          .reversed()
                          .thenComparing(Map.Entry::getKey);

        // 排序 + 截取TopN + 收集为按插入顺序保持的LinkedHashMap
        return frequency.entrySet().stream()
                .sorted(byCountDescThenWordAsc)
                .limit(limit)
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue,
                        (a, b) -> a,              // 不会冲突;占位以满足toMap签名
                        LinkedHashMap::new        // 保持有序(稳定输出)
                ));
    }

    /**
     * 默认Top10的便捷方法。
     */
    public static LinkedHashMap<String, Long> topFrequentKeywords(
            List<String> titles,
            Set<String> stopWords
    ) {
        return topFrequentKeywords(titles, stopWords, DEFAULT_TOP_N);
    }

    // 示例主方法(可选)
    public static void main(String[] args) {
        List<String> titles = Arrays.asList(
                "Java Streams in Action",
                "Effective Java: Best Practices",
                "Java & JVM: Memory Model Insights!!!",
                "Stream processing with Java 17 and Spring",
                "Top 10 Java Streams Tips & Tricks"
        );

        Set<String> stopWords = new HashSet<>(Arrays.asList(
                "in", "and", "with", "the", "a", "of", "to", "for", "on",
                "jvm", "17", "10", "&" // 数字和符号若需过滤可加入停用词
        ));

        LinkedHashMap<String, Long> top = topFrequentKeywords(titles, stopWords, 10);
        System.out.println(top);
    }
}

代码说明

  • NON_ALNUM_SPLITTER:使用 "[^\p{L}\p{N}]+" 基于Unicode分词,支持多语言字母与数字。避免仅ASCII的局限。
  • Locale.ROOT:统一小写时使用ROOT,避免土耳其语等区域性大小写陷阱。
  • normalizedStopWords:将停用词小写化后放入不可变集合,查找O(1)。
  • flatMap:对每个标题分词后扁平化为词流。
  • 过滤链:
    • isBlank 防止空白词进入。
    • 长度>=2 满足需求,抑制单字符噪声。
    • 非停用词过滤。
  • groupingBy + counting:统计词频,返回Map<String, Long>。
  • 排序比较器:
    • 先按频次降序(reversed)
    • 再按词升序(自然序) 这样在频次相同的情况下有确定性顺序,且配合稳定的Stream.sorted与LinkedHashMap保证输出稳定。
  • limit(limit):截取TopN,默认10。
  • 收集器使用LinkedHashMap::new,按插入顺序保持排序结果。

使用示例

  • 输入:
    • titles:
      • "Java Streams in Action"
      • "Effective Java: Best Practices"
      • "Java & JVM: Memory Model Insights!!!"
      • "Stream processing with Java 17 and Spring"
      • "Top 10 Java Streams Tips & Tricks"
    • stopWords: ["in","and","with","the","a","of","to","for","on","jvm","17","10","&"]
    • topN: 10
  • 预期输出(LinkedHashMap,按顺序):
    • {java=5, streams=2, action=1, best=1, effective=1, insights=1, memory=1, model=1, practices=1, processing=1}

说明:频次相同的多个词按词典序升序挑选,确保结果可预测。

注意事项

  • 分词规则:基于Unicode的字母/数字识别,适合大多数语言。若需特定语言的专业分词(如中文分词),需替换分词器。
  • 停用词匹配采用小写对齐,请保证传入停用词为期望的语言与形态。
  • 大数据量时,groupingBy会在内存中聚合所有词频;如数据规模特别大,可考虑分片处理或使用近似算法(如Top-K堆与流式频率估计),但需根据业务场景取舍精度。
  • 不建议在此场景下使用并行流:排序与TopN需要全局有序,且串行管道更易确保稳定输出和可读性。
  • 若允许数字词进入统计,请从停用词中移除数字字符串;若不希望数字进入,可在过滤中增加 token.chars().anyMatch(Character::isLetter) 条件排除纯数字。

场景分析

  • 输入:List 商品名称
  • 目标:为每个名称生成稳定顺序、唯一且长度不超过60的SEO短链 slug
  • 规则:
    • 预处理:trim、转小写、空白→连字符、移除非[a-z0-9-]、合并多连字符、去首尾连字符
    • 长度限制:最终 slug 不超过60字符
    • 冲突处理:同名冲突追加后缀“-2”、“-3”…;追加后缀时先截断基底,确保总长度≤60
    • 稳定顺序:输出与输入下标一致
    • 兜底:预处理为空时使用“n”;异常时安全兜底

代码实现

import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public final class SlugGenerator {

    // 配置
    private static final int MAX_SLUG_LEN = 60;
    private static final Locale LOCALE = Locale.ROOT;

    // 预编译正则,避免重复创建
    private static final Pattern WHITESPACE = Pattern.compile("\\s+");
    private static final Pattern NON_ALNUM_OR_HYPHEN = Pattern.compile("[^a-z0-9-]");
    private static final Pattern MULTI_HYPHEN = Pattern.compile("-{2,}");
    private static final Pattern EDGE_HYPHENS = Pattern.compile("^-+|-+$");

    private SlugGenerator() {}

    /**
     * 将商品名列表转换为唯一且<=60长度的slug列表(与输入顺序一致)。
     */
    public static List<String> generateSlugs(List<String> names) {
        if (names == null || names.isEmpty()) {
            return Collections.emptyList();
        }

        // 冲突状态:每个“基底slug”的下一个可用后缀值,及全局已占用集合
        Map<String, Integer> nextSuffix = new HashMap<>();
        Set<String> taken = new HashSet<>();

        // 顺序流(禁止并行)+ 两段映射:规范化 → 冲突消解
        return names.stream()
                .sequential()
                .map(SlugGenerator::safeNormalizeBase)              // 1) 规范化为基底slug(<=60)
                .map(base -> ensureUnique(base, nextSuffix, taken)) // 2) 冲突处理并保证<=60
                .collect(Collectors.toList());
    }

    /**
     * 安全规范化:异常兜底为 "n"。
     */
    private static String safeNormalizeBase(String raw) {
        try {
            return normalizeBaseSlug(raw, MAX_SLUG_LEN);
        } catch (Exception e) {
            // 极端异常兜底,保证流程不中断
            return "n";
        }
    }

    /**
     * 生成“基底slug”:不带后缀,长度<=maxLen。
     * 规则:trim → lower → 空白→- → 移除非[a-z0-9-] → 合并- → 去首尾- → 截断 → 再去首尾- → 兜底"n"
     */
    static String normalizeBaseSlug(String raw, int maxLen) {
        String s = raw == null ? "" : raw.trim().toLowerCase(LOCALE);
        s = WHITESPACE.matcher(s).replaceAll("-");
        s = NON_ALNUM_OR_HYPHEN.matcher(s).replaceAll("");
        s = MULTI_HYPHEN.matcher(s).replaceAll("-");
        s = EDGE_HYPHENS.matcher(s).replaceAll("");
        if (s.isEmpty()) s = "n";

        if (s.length() > maxLen) {
            s = s.substring(0, maxLen);
            s = EDGE_HYPHENS.matcher(s).replaceAll(""); // 截断后再次去首尾-
            if (s.isEmpty()) s = "n";
        }
        return s;
    }

    /**
     * 基于“基底slug”生成唯一slug:若冲突,按 -2、-3… 递增,并在追加前按后缀长度截断基底,确保总长<=MAX_SLUG_LEN。
     */
    static String ensureUnique(String base,
                               Map<String, Integer> nextSuffix,
                               Set<String> taken) {
        String candidate = base;
        int suffix = nextSuffix.getOrDefault(base, 1);

        // 尝试直接占用(首次出现且未被其他基底抢占时可成功)
        if (!taken.add(candidate)) {
            // 已冲突:从当前记录的suffix开始递增,生成 -2、-3...
            do {
                suffix++;
                String suffixStr = "-" + suffix;

                // 预留后缀长度,截断基底,保证总长度<=MAX_SLUG_LEN
                int allowedBaseLen = Math.max(0, MAX_SLUG_LEN - suffixStr.length());
                String trimmedBase = base.length() > allowedBaseLen
                        ? EDGE_HYPHENS.matcher(base.substring(0, allowedBaseLen)).replaceAll("")
                        : base;
                if (trimmedBase.isEmpty()) trimmedBase = "n";

                candidate = trimmedBase + suffixStr;
            } while (!taken.add(candidate)); // 直到唯一为止

            nextSuffix.put(base, suffix);
        } else {
            // 记录当前基底的后缀起始(首次成功占用,下一次从-2开始)
            nextSuffix.putIfAbsent(base, suffix);
        }
        return candidate;
    }

    // 方便单测或复用
    public static void main(String[] args) {
        List<String> input = Arrays.asList(
                "  Apple iPhone 15 Pro Max 256GB  ",
                "Apple  iPhone   15  Pro   Max   256GB", // 同名→ -2
                "Sony WH-1000XM5   Headphones",
                "Sony  WH-1000XM5 Headphones",          // 同名→ -2
                "   ",
                null,
                "   ---###   ",                          // 这些都会归一到 "n" 系列
                "Cafe & Bar — Best-in-Class!",
                "Cafe & Bar — Best in class",           // 同名→ -2
                "A very very very very very very very very very very long product name"
        );

        List<String> slugs = generateSlugs(input);
        slugs.forEach(System.out::println);
    }
}

代码说明

  • generateSlugs
    • 使用顺序流保证输出顺序与输入一致。
    • 两段式映射:
      • safeNormalizeBase:将原始字符串规范化为“基底slug”(不带数字后缀),并兜底为空场景为“n”,同时截断到≤60。
      • ensureUnique:基于全局 taken 集合与 nextSuffix 计数,对每个基底slug做冲突处理:
        • 若未冲突,直接占用;
        • 若冲突,按 -2、-3… 递增尝试;
        • 每次尝试都会先按“后缀长度”截断基底,确保“基底 + 后缀”的总长度≤60。
  • 正则说明
    • WHITESPACE 匹配所有空白字符并统一替换为连字符;
    • NON_ALNUM_OR_HYPHEN 移除除 a-z、0-9、- 之外的字符;
    • MULTI_HYPHEN 合并多余连字符;
    • EDGE_HYPHENS 去除首尾连字符。
  • 兜底与健壮性
    • 预处理后为空时统一使用“n”;
    • 极端异常(如非常规字符导致的边界问题)时 safeNormalizeBase 返回“n”;
    • 冲突环节始终以 HashSet 判重,保证全局唯一。

使用示例 输入:

  • [" Apple iPhone 15 Pro Max 256GB ", "Apple iPhone 15 Pro Max 256GB", "Sony WH-1000XM5 Headphones", "Sony WH-1000XM5 Headphones", " ", null, " ---### ", "Cafe & Bar — Best-in-Class!", "Cafe & Bar — Best in class", "A very very very very very very very very very very long product name"]

可能的输出(示意,最后一项将被截断至<=60):

  • apple-iphone-15-pro-max-256gb
  • apple-iphone-15-pro-max-256gb-2
  • sony-wh-1000xm5-headphones
  • sony-wh-1000xm5-headphones-2
  • n
  • n-2
  • n-3
  • cafe-bar-best-in-class
  • cafe-bar-best-in-class-2
  • a-very-very-very-very-very-very-very-very-very-very-long-pr (示例,确保<=60)

说明:

  • 第1/2项同名冲突,追加 -2;
  • 第3/4项同名冲突,追加 -2;
  • 第5/6/7项都归一为“n”,依次为 n、n-2、n-3;
  • 第8/9项规范化后相同,追加 -2;
  • 第10项会在规范化后按规则截断至最多60字符。

注意事项

  • 请勿使用 parallel() 并行流;本实现依赖有序处理的可变状态(Map/Set)来保证稳定顺序与唯一性。
  • 追加后缀前先按后缀长度截断基底,确保最终长度≤60;截断后再次去首尾连字符。
  • 非ASCII字母会被移除而非音译;若需要音译(如中文转拼音),需在 normalize 阶段引入额外转换。
  • 对极端大规模重复(同一基底出现次数非常多)时,后缀可能增长到多位数字,但仍保证长度限制与唯一性。
  • 若需要与历史数据全局唯一(跨批次),可将 taken/nextSuffix 作为外部可维护的状态传入并复用。

示例详情

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

基于业务场景一键生成可复制的Java流式代码,附注释与示例,快速落地需求。
自动识别筛选、转换、分组、聚合等意图,给出最简洁的流操作链路。
自动补全类型、空值与边界校验,并添加必要异常处理,降低线上风险。
通过人性化模板输入,按数据源与输出要求定制生成结果,减少沟通成本。
内置最佳实践与性能优化建议,避免低效写法,让代码更易读、更易维护。
生成场景分析-代码-说明-示例-注意事项全套交付件,支持评审与沉淀知识库。
适配电商、金融、日志、社交等常见场景,轻松完成订单统计与行为分析。
与现有集合与项目代码快速对接,可替换样例数据源,零阻力上手。
帮助团队统一函数式编程风格,缩短新人上手与审查时间,提升交付稳定性。

🎯 解决的问题

  • 将自然语言业务描述一键转成规范、可读、可维护的 Java 流式处理代码与清晰解释,快速落地需求
  • 覆盖筛选、转换、分组、聚合、排序、去重等高频场景,内置边界与异常兜底,减少线上隐患
  • 在“需求澄清—原型验证—正式开发—代码评审—知识沉淀”全流程提效,降低新人上手门槛
  • 固化团队最佳实践与统一风格,避免过时用法与低效写法,提升性能与代码一致性
  • 提供可复用输入槽位与标准输出结构,便于跨项目、跨团队快速复制使用
  • 以“代码 + 注释 + 示例 + 注意事项”打包输出,既能直接提交,也可作为学习材料与评审依据

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...
📋
提示词复制
在当前页面填写参数后直接复制: