Awt Dimension类与自定义Pair类性能

问题描述 投票:1回答:1

Awt的Dimension class可以做很多事情,在不同的数字类型等之间进行转换。我正在使用这些类来表示需要每ms更新的大2d世界中的单元格。如果我一直坚持使用Dimension类而不是使用我的自定义Pair类,我可以获得性能提升吗?这是我的自定义Pair类:

public class Pair<A, B> {
private A first;
private B second;

public Pair(A first, B second) {
    super();
    this.first = first;
    this.second = second;
}
public static <A, B> Pair <A, B> createPair(A first, B second) {
    return new Pair<A, B>(first, second);
}

@Override
public int hashCode() {
    int hashFirst = first != null ? first.hashCode() : 0;
    int hashSecond = second != null ? second.hashCode() : 0;

    return (hashFirst + hashSecond) * hashSecond + hashFirst;
}

@Override
public boolean equals(Object other) {
    if (other instanceof Pair) {
        Pair otherPair = (Pair) other;
        return 
        ((  this.first == otherPair.first ||
            ( this.first != null && otherPair.first != null &&
              this.first.equals(otherPair.first))) &&
         (  this.second == otherPair.second ||
            ( this.second != null && otherPair.second != null &&
              this.second.equals(otherPair.second))) );
    }

    return false;
}

@Override
public String toString()
{ 
       return "(" + first + ", " + second + ")"; 
}

public A getX() {
    return first;
}

public B getY() {
    return second;
}
}

当我在寻找Pair实现时,我没有在任何地方看到Dimension的提及,想知道为什么..

java awt coordinates dimension
1个回答
1
投票

当我在寻找Pair实现时,我没有在任何地方看到Dimension的提及,想知道为什么..

好吧,Dimension可以被视为Pair但不是相反。维度具有两个int值,而通用对可以具有任何类型的组合。

顺便说一下,通用对没有提供更多关于数据的信息,而不是某些关系中有两个对象。这就是为什么一般使用专门的类比成对的优先,例如Dimension将这两个值定义为宽度和高度,而不是其他任何内容,因此您只需使用Pair<Integer, Integer>即可获得更多信息。

除此之外,你需要注意Dimension有整数字段,因此只能表示整数范围,即宽度= 2.5是不可能的。除此之外,我不会使用Dimension来表示位置,因为虽然数据看似相似,但数据的语义(含义)不是(维度定义了一个区域,而位置是点)。

您可以考虑使用Point2D.FloatPoint2D.Double代替。

© www.soinside.com 2019 - 2024. All rights reserved.