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

Java如何提取字符串数字并按字符串内time字段对数组升序排序

Java数组按time字段升序排序实现方案

我们可以直接使用Java内置的Arrays.sort()方法搭配自定义比较器实现需求,不需要手动编写排序循环,同时优化time字段提取逻辑,支持提取多位数的time值:

import java.util.Arrays;
import java.util.Comparator;

public class SortByTime {
    public static void main(String[] args) {
        String[] arr1={"sell 1, time 4, item 4", "buy 3, time 2, item 5"};
        
        // 传入自定义比较器完成排序
        Arrays.sort(arr1, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                int time1 = extractTime(s1);
                int time2 = extractTime(s2);
                // 升序排序直接返回两个time的差值即可
                return time1 - time2;
            }

            // 提取字符串中time字段的整数值
            private int extractTime(String str) {
                // 定位到time字段后的数字起始位置
                int timeStartIndex = str.indexOf("time") + 5;
                // 遍历找到数字结束的位置,支持提取两位数及以上的time值
                int timeEndIndex = timeStartIndex;
                while (timeEndIndex < str.length() && Character.isDigit(str.charAt(timeEndIndex))) {
                    timeEndIndex++;
                }
                String timeStr = str.substring(timeStartIndex, timeEndIndex);
                return Integer.parseInt(timeStr);
            }
        });

        // 验证排序结果
        System.out.println(Arrays.toString(arr1));
    }
}

运行后输出结果为:
[buy 3, time 2, item 5, sell 1, time 4, item 4],和预期排序结果一致。

  • 若业务场景可能存在无time字段的异常字符串,可在extractTime方法中添加异常判断逻辑,避免下标越界或类型转换错误。
  • 若需要降序排序,只需把比较器的返回值修改为time2 - time1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:02