所以我试图存储一个对象的5个属性,它们是5个不同的整数。
存储这些产品的最佳方法是什么?我在考虑数组,但数组并不灵活。我还需要能够检索所有5个属性,因此数组可能无法正常工作。
这里有一些背景,如果它有帮助:我目前正在制作类似于Terraria(或2D中的Minecraft)的游戏。
我想存储对象在map(x,y)
上的位置,它位于map(x,y)
部分的屏幕上,以及它是什么类型的对象。
答案 0 :(得分:3)
import java.awt.Point
public class MyClass {
private Point pointOnMap;
private Point pointOnScreen;
// ...
}
Point
类绑定x& y将值赋值为单个对象(这是有意义的),并为您提供有用的基本方法,例如translate
和distance
。 http://docs.oracle.com/javase/7/docs/api/java/awt/Point.html
答案 1 :(得分:1)
无法在不查看所有代码的情况下预测存储属性的最有效方法。 (而且我一个人不想:-))其次,你还没有清楚地解释你正在优化的内容。速度?内存使用情况?最小化GC暂停?
然而,这种气味过早优化。浪费时间试图在没有构建的东西上优化性能,并且没有任何证据表明这部分代码库的性能将会很重要。
我的建议是:
选择一个简单的设计并实现它;例如带有getter和setter的5个private int
变量。如果不方便,请选择更方便的API。
完成该计划。
让它发挥作用。
基准测试。它运行得足够快吗?如果是,请停止。
简介。选择最大的性能热点并进行优化。
重新运行基准测试和配置文件,以检查您的优化是否使事情变得更快。如果是,那么"提交"它。如果没有,请将其退回。
转到第4步。
答案 2 :(得分:0)
我建议使用HashMap,其中key可以是objectId-attributeName
,值将是integer
值,因为您必须根据键进行检索。这将是O(1)
操作