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

如何对存储坐标的ArrayList元素使用.split()拆分经纬度

解决方案

直接通过遍历原列表,对每个坐标字符串执行拆分、转换后存入对应列表即可,以下是完整的实现示例:

基础实现(Java 7及以上)

import java.util.ArrayList;

public class CoordinateHandler {
    public static void main(String[] args) {
        // 初始化原坐标列表
        ArrayList<String> rawCoordinates = new ArrayList<>();
        rawCoordinates.add("91.826461 86.019730");
        rawCoordinates.add("104.066800 30.572800");
        rawCoordinates.add("116.407400 39.904200");

        // 准备存储经度、纬度的列表
        ArrayList<Double> longitudes = new ArrayList<>();
        ArrayList<Double> latitudes = new ArrayList<>();

        // 遍历处理每个坐标
        for (String coord : rawCoordinates) {
            // 按空格拆分,若存在多空格/制表符,改用split("\\s+")更鲁棒
            String[] splitResult = coord.split(" ");
            // 校验拆分结果格式,避免异常
            if (splitResult.length == 2) {
                try {
                    double lon = Double.parseDouble(splitResult[0]);
                    double lat = Double.parseDouble(splitResult[1]);
                    longitudes.add(lon);
                    latitudes.add(lat);
                } catch (NumberFormatException e) {
                    // 处理格式错误的数值,比如打印日志
                    System.err.println("无效的坐标数值: " + coord);
                }
            } else {
                System.err.println("格式错误的坐标字符串: " + coord);
            }
        }

        // 输出结果验证
        System.out.println("经度列表: " + longitudes);
        System.out.println("纬度列表: " + latitudes);
    }
}

简洁写法(Java 8+ 流式API)

如果使用Java 8及以上版本,可以用流式API简化代码:

// 基于流式API的处理逻辑
rawCoordinates.stream()
              .map(coord -> coord.split("\\s+")) // 拆分坐标字符串
              .filter(parts -> parts.length == 2) // 过滤格式正确的元素
              .forEach(parts -> {
                  try {
                      longitudes.add(Double.parseDouble(parts[0]));
                      latitudes.add(Double.parseDouble(parts[1]));
                  } catch (NumberFormatException e) {
                      System.err.println("数值解析失败: " + String.join(" ", parts));
                  }
              });

关键要点

  • 遍历方式:使用增强for循环(或流式API)可以简洁地遍历原列表的每个元素。
  • 拆分规则:split(" ")适用于单个空格分隔的场景;若坐标字符串可能包含多个连续空格、制表符,建议用split("\\s+")匹配任意空白字符,兼容性更强。
  • 异常处理:添加格式校验和try-catch块,避免因脏数据(比如格式错误、非数值内容)导致程序崩溃。
  • 类型选择:将拆分后的字符串转为Double类型,方便后续的地理计算;如果仅需存储字符串,直接添加splitResult[0]和splitResult[1]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:16:16