Collections.min返回内存位置而不是值

时间:2016-05-14 21:52:45

标签: java

我有一个名为Coord的基本类,其中包含两个整数字段xy。我想使用Collections.min方法查找最小的x值。但是,java返回内存位置而不是值。主要方法如下:

import java.util.*;

public class Test
{
  public static void main(String[] args)
  {
    List<Coord> list = new ArrayList<>();

    list.add(new Coord(10, 12));
    list.add(new Coord(8, 4));
    list.add(new Coord(15, 22));
    list.add(new Coord(9, 11));
    list.add(new Coord(56, 7));
    list.add(new Coord(3, 14));
    list.add(new Coord(23, 7));

      System.out.println(
        Collections.min(list, (a, b) -> a.getX().compareTo(b.getX()))
        );
  }
} 

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

你几乎拥有它! Collections个方法返回Collections个对象,这意味着您只需要在该对象上使用getXgetY方法。

Collections.min(list, (a, b) -> a.getX().compareTo(b.getX())).getX()

答案 1 :(得分:1)

因为您在Collections.min个对象的集合上调用Coord,所返回的值为Coord。在其上调用getX()以获得最小的x值。

答案 2 :(得分:0)

更改您的

Collections.min(list, (a, b) -> a.getX().compareTo(b.getX()))

进入

Collections.min(list, (a, b) -> Integer.compare(a.getX(), b.getX())).getX()