java - 带有对象的ArrayList,排序并找到最大的对象(按面积排列的矩形)

标签 java object arraylist max area

我有一个问题,我知道如何对整数数组进行排序并找到最大值,但是当我有对象(矩形)的数组列表时我不知道该怎么做,请有人帮助解决这个算法。

这是我所做的:

public static Rectangle largest(ArrayList < Rectangle > rectangles) {

 Rectangle max = rectangles.get(0);
 for (Rectangle temp: rectangles) {
  if (temp.getArea() > max.getArea())
   max = temp;

 }
 return max;
}

最佳答案

如果您是该程序的设计者,您可以制作 Rectangle实现Comparable<Rectangle>

public class Rectangle implements Comparable<Rectangle> {
    // existing code
    public int compareTo (Rectangle r) {
        return Integer.compare(this.area, r.getArea());
    }
}

然后只需使用 Collections#sort

Collections.sort(rectangles);
<小时/>

如果您使用此版本的 java,您可能需要定义 Comparator sort内使用 lambda 的方法表达。

Collections.sort(rectangles, (rectangleOne, rectangleTwo) -> Integer.compare(rectangleOne, rectangleTwo));

关于java - 带有对象的ArrayList,排序并找到最大的对象(按面积排列的矩形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371621/

相关文章:

java - 尝试从混音器(立体声混音)读取字节时出现 ArrayIndexOutOfBoundsException

java - 不确定,但我认为 eclipse 不会在 tomcat 服务器上运行我的应用程序

javascript - typescript enum 反编译函数如何一次创建 2 个键值对?

java - 为什么我不能将非常规类型 Arraylist<> 注册到 ArrayList<> 中?

java - 对内部有对象的 ArrayList 进行排序

java - 为什么我的 ArrayList 中填充有重复的节点值?

java - 使用 log4j 在 Java 中记录运行时异常

java - 谷歌地图 View java android中的错误谷歌播放服务更新

Java 对象类,构造函数链接

java - 没有引用的新对象的生命周期