Android Studio Java:过滤指定邮箱提取对应经纬度值
需求实现:筛选指定邮箱的经纬度数据
需求说明
现有包含邮箱、经纬度等信息的JSON数组数据,以及Android Studio中的Java代码片段,需修改代码实现以下功能:
- 仅筛选出邮箱为
aaaa@mail.address的条目 - 提取并打印符合条件条目的
lati(纬度)与longt(经度)值 - 将符合条件的经纬度添加至
latLngList
原代码
public void onCompleted(List<Lalo> laloList) { // I consider here is list of latlng from database. List<LatLng> latLngList = new ArrayList<>(); Log.d("wwww", "laloList: " + laloList); for (Lalo lalo : laloList) { String a = lalo.getLati(); Log.d("ww", "a: " + a); String b = lalo.getLongt(); String c = lalo.getEmail(); Log.d("ww", "c: " + c); Log.d("ww", "b: " + b); LatLng latLng = new LatLng(Double.parseDouble(a), Double.parseDouble(b)); latLngList.add(latLng); } }
原JSON数据
[ { "num": "34304", "email": "aaaa@mail.address", "lati": "8888888", "longt": "88888888", "time": "2022-12-08 21:15:39" }, { "num": "34303", "email": "aaaa@mail.address", "lati": "8888", "longt": "88888", "time": "8888888" }, { "num": "34302", "email": "bbbb@mail.address", "lati": "8888", "longt": "88888", "time": "8888888" }, { "num": "34301", "email": "aaaa@mail.address", "lati": "8888", "longt": "88888", "time": "8888888" }, { "num": "34300", "email": "cccc@mail.address", "lati": "8888", "longt": "88888", "time": "8888888" } ]
修改后的完整代码
public void onCompleted(List<Lalo> laloList) { // 存储符合条件的经纬度列表 List<LatLng> latLngList = new ArrayList<>(); Log.d("wwww", "原始数据列表: " + laloList); // 目标筛选邮箱 String targetEmail = "aaaa@mail.address"; for (Lalo lalo : laloList) { String email = lalo.getEmail(); // 判断当前条目的邮箱是否匹配目标邮箱 if (targetEmail.equals(email)) { String latiStr = lalo.getLati(); String longtStr = lalo.getLongt(); // 打印符合条件的经纬度 Log.d("筛选结果", String.format("匹配邮箱 %s,纬度:%s,经度:%s", targetEmail, latiStr, longtStr)); try { // 转换字符串为Double类型,避免格式异常 double lati = Double.parseDouble(latiStr); double longt = Double.parseDouble(longtStr); LatLng latLng = new LatLng(lati, longt); latLngList.add(latLng); } catch (NumberFormatException e) { // 处理经纬度格式错误的情况 Log.e("数据错误", String.format("邮箱 %s 的经纬度格式无效:纬度=%s,经度=%s", targetEmail, latiStr, longtStr), e); } } } // 可选:打印最终筛选后的经纬度列表 Log.d("最终列表", "符合条件的经纬度数量:" + latLngList.size() + ",列表内容:" + latLngList); }
关键修改说明
- 添加邮箱筛选逻辑:通过
targetEmail.equals(email)判断当前条目是否符合邮箱要求,仅匹配条目执行后续操作 - 优化日志输出:调整日志内容,让打印信息更清晰,明确标注筛选结果
- 增加异常处理:捕获
Double.parseDouble()可能抛出的NumberFormatException,避免因经纬度格式错误导致程序崩溃 - 优化变量命名:将原代码中模糊的
a、b、c改为latiStr、longtStr、email,提升代码可读性
内容的提问来源于stack exchange,提问作者andrew kim
相关产品推荐
相关产品推荐

