将坐标存储在数组或两个整数中更好吗?

时间:2014-01-15 03:07:00

标签: java arrays int coordinates

我正在编写一个Java程序,它具有带x和y位置的Character对象。我想知道将对象的坐标存储在数组中是否更好,或者只是将位置存储为两个整数。

我可以将它存储在一个数组中:

Integer[] pos = {1, 5};

或两个整数:

Integer x = 1;
Integer y = 5;

哪个更好?

1 个答案:

答案 0 :(得分:3)

Java

中裸结构类型类的惯用语版本
public class Coordinate
{
    public final int x;
    public final int y;

    public Coordinate(@Nonnull final int x, @Nonnul final int y)
    {
        this.x = x;
        this.y = y;
    }

    public String toString() { return String.format("%d/%d", this.x, this.y); }

    public int hashCode() { return this.toString().hashCode(); }

    public boolean equals(@Nullable final Object o) { return this.equals((Coordinate)o); }

    public boolean equals(@Nullable final Coordinate c) { return this.x = c.x && this.y == c.y; }
}

Concern yourself with correctness first, maintainability second and performance only when you detect a problem and profile and measure the problem.

  

上述课程几乎是一般操作的最低级别   使用标准库容器和行为编程案例   正确。工作时.equals().hashCode()很重要   特别是Map个容器。 .toString()是一个很好的方式来获得一个   良好的人类可读表示和一致的.hashCode() at   同时。

     

此设计还避开了settersgetters,因为它们是不可变的   句法开销。

     这个设计中的

getters只是很好的性能,因为JIT编译器会   最终内联它们因为使用final是对优化器的暗示。

     

我只是因为空间和风格原因选择不包括它们。

在正常情况下,没有多少能够击败不可变数据的结构,并且您可以获得thread安全性而不会出现锁定/同步问题。

@Nonnull@Nullable注释可从com.google.code.findbugs JSR-305库获得。