使用Iterator遍历List<Point>,找出Y坐标最大的Point对象
修复并完成
highestPoint静态方法 咱们先梳理下你现有代码里的问题,再给出完整可运行的实现:
原代码的核心问题点
- 调用
pointIterator.next()后没有把返回的Point对象存到变量里,导致没法访问该对象的Y坐标 - 错误地对
List集合调用getY(),应该是对遍历到的单个Point对象操作 - 初始
highest设为0不合理,如果所有Point的Y坐标都是负数,会得到错误结果 - 没有更新
highestPoint变量,最终无法返回正确的目标对象
修正后的完整代码
import java.awt.Point; import java.util.Iterator; import java.util.List; public class PointHelper { // 需要一个类来承载静态方法 public static Point highestPoint(List<Point> points) { // 先处理空集合/空参数的情况,避免运行时异常 if (points == null || points.isEmpty()) { return null; } Iterator<Point> pointIterator = points.iterator(); // 用第一个Point的Y坐标初始化最高值,同时记录初始最高点 Point highestPoint = pointIterator.next(); int highest = highestPoint.y; // 也可以用highestPoint.getY(),返回double类型,按需选择即可 while (pointIterator.hasNext()) { Point currentPoint = pointIterator.next(); // 比较当前点的Y坐标与当前最高值 if (currentPoint.y > highest) { highest = currentPoint.y; highestPoint = currentPoint; // 更新最高点对象 } } return highestPoint; } }
代码逻辑说明
- 先做空值校验,防止遍历空集合时抛出
NoSuchElementException - 用第一个遍历到的Point初始化基准值,这样即使所有Y坐标都是负数,也能正确找到最大值
- 每次遍历都把
next()返回的对象存到currentPoint变量,通过它访问Y坐标(Point类的y是公共成员变量,也可以用getY()方法) - 每当发现Y坐标更大的点时,同时更新最高值和最高点对象
- 最后返回记录的最高点对象
内容的提问来源于stack exchange,提问作者user8805424
相关产品推荐
相关产品推荐

