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

如何基于数组指定索引值筛选数据并存入TreeMap?

问题分析与解决方案

核心问题

你的代码逻辑完全错误,问题出在这两处:

  • 用Arrays.toString(r_data_double_arr)把数组转成字符串后,调用a.indexOf(2)是在找字符'2'在字符串里的位置,根本不是获取数组索引2的元素值,这和你要判断的“第三个元素是否大于50”完全不沾边。
  • 没有处理Double数组的空值问题:初始化的Double数组元素默认是null,直接访问r_data_double_arr[2]可能触发空指针异常。

修正后的代码

// 假设你已初始化日期格式化实例,示例:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

private Double r_data_double_arr[] = new Double[89];
Map<String, Object> rightDataDict = new TreeMap<>();
Map<String, Object> rightDataDictCon = new TreeMap<>();

Date date = new Date();

// 直接访问数组索引2的元素,先判空再判断数值
Double targetValue = r_data_double_arr[2];
if (targetValue != null && targetValue > 50) {
    // 按需选择存储原数组或字符串形式的数组
    rightDataDict.put(formatter.format(date), r_data_double_arr);
    // 若需存字符串形式,替换为:
    // rightDataDict.put(formatter.format(date), Arrays.toString(r_data_double_arr));
}

关键说明

  • 直接通过数组[索引]访问目标元素:r_data_double_arr[2]就是你要判断的第三个元素。
  • 增加空值判断:Double是包装类型,数组初始化后元素为null,先判断targetValue != null可避免空指针异常。
  • 日期格式化直接用formatter.format(date)即可,无需额外套String.valueOf()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:10:35