You need to enable JavaScript to run this app. Java如何根据字符串内部的价格整数值对字符串进行升序排序
优惠活动
大模型
产品
解决方案
定价
更多

Java如何根据字符串内部的价格整数值对字符串进行升序排序

实现思路
  • 定义统一数据结构存储单条活动的完整内容和提取出的价格值,降低排序逻辑复杂度
  • 通过正则表达式匹配所有内容中price 后的整数值,自动忽略后续的onwards等无关后缀
  • 调用Java自带排序能力,按提取的价格整数值做升序排序,价格相同的条目顺序可按需调整
完整实现代码
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ActivitySorter {
    // 匹配price后面数字的正则规则
    private static final Pattern PRICE_PATTERN = Pattern.compile("price (\\d+)");

    // Java 16+ 可用record简化代码,低版本替换为普通POJO类即可
    record Activity(String fullContent, int price) {}

    public static void main(String[] args) {
        // 初始化所有待排序的原始活动字符串
        List<String> rawActivities = buildRawActivityList();

        // 转换为Activity对象并提取对应价格
        List<Activity> activityList = new ArrayList<>();
        for (String raw : rawActivities) {
            int price = extractPrice(raw);
            activityList.add(new Activity(raw, price));
        }

        // 按价格升序排序
        activityList.sort(Comparator.comparingInt(Activity::price));

        // 输出排序结果
        System.out.println("===== 排序后结果 =====");
        for (int i = 0; i < activityList.size(); i++) {
            System.out.printf("第%d名(价格:%d):\n%s\n\n", i+1, activityList.get(i).price(), activityList.get(i).fullContent());
        }
    }

    // 从活动内容中提取价格整数值
    private static int extractPrice(String content) {
        Matcher matcher = PRICE_PATTERN.matcher(content);
        if (matcher.find()) {
            return Integer.parseInt(matcher.group(1));
        }
        // 未匹配到价格的条目默认排到列表最后
        return Integer.MAX_VALUE;
    }

    // 构造原始活动数据集
    private static List<String> buildRawActivityList() {
        List<String> list = new ArrayList<>();
        list.add("Indian Chess League 2021\nOnline (Play From Home)\nE Sports\nprice 99 onwards");
        list.add("Weekly Chess Maha Muqabla\nOnline (Play From Home)\nE Sports\nprice 225 onwards");
        list.add("Call of Duty Mobile Tournament\nOnline (Play From Home)\nE Sports\nprice 300 onwards");
        list.add("Green 10KM Challenge – Get India`s Biggest Medal\nYour Place and Your Time: India\nE Sports\nprice 399");
        list.add("Free Fire Solo And Squad (Bermuda)\nOnline (Play From Home)\nE Sports\nprice 100 onwards");
        list.add("Johnson Call Of Duty Mobile Tournament\nOnline (Play From Home)\nE Sports\nprice 100 onwards");
        list.add("Online Martial Arts Coaching for Kids at Home\nOnline Streaming\nMixed Martial Arts\nprice 1180 onwards");
        list.add("Call of Duty Battle Royale In Aid Of Sightsavers\nOnline (Play From Home): India\nE Sports\nprice 100");
        return list;
    }
}
排序后输出结果(内容已翻译为中文)
  • 价格99:
    2021印度象棋联赛
    线上(居家参赛)
    电竞项目
    报名费99起
  • 价格100:
    自由之火单/四人模式赛(百慕大地图)
    线上(居家参赛)
    电竞项目
    报名费100起
  • 价格100:
    约翰逊杯使命召唤手游联赛
    线上(居家参赛)
    电竞项目
    报名费100起
  • 价格100:
    助力Sightsavers公益使命召唤大逃杀赛
    线上(居家参赛):印度赛区
    电竞项目
    报名费100
  • 价格225:
    每周象棋超级挑战赛
    线上(居家参赛)
    电竞项目
    报名费225起
  • 价格300:
    使命召唤手游联赛
    线上(居家参赛)
    电竞项目
    报名费300起
  • 价格399:
    绿色10公里挑战赛——赢取印度最大尺寸奖牌
    时间地点自定:印度全境可参与
    电竞项目
    报名费399
  • 价格1180:
    儿童居家线上武术课程
    线上直播授课
    综合武术类
    报名费1180起

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 17:06:04