如何在Java中保存动态键值对?

时间:2016-07-19 16:44:17

标签: java collections

我想保存一些价值的标志'变成一个变量。

例如。有2个整数标志xdirection = 0,ydirection = 1

现在这些值可以在程序执行期间发生变化。

我尝试过ArrayList和HashMap,但它们只在将值添加到地图时存储值。

基本上我想要的是一个地图列表,给我两件事,1 - 变量的名称(我可以把它放在地图上硬编码)和2 - 这个变量/标志的整数值当前在程序

1 个答案:

答案 0 :(得分:2)

为什么普通对象不起作用?

  

关于全局状态机反模式的问题   这个答案应该考虑到这一点。这是Singletons   有限的外部资源(如套接字或文件引用)对于许多记录良好的原因都很糟糕,这些原因很容易在   一般的互联网所以我不会在这里触及。你应该认真避免使用这些类型的天真状态机。

public final class Direction
{
   public final AtomicInteger xDirection;
   public final AtomicInteger yDirection;

   public final Direction(final int x, final int y) 
   {  
      this.xDirection = new AtomicInteger(x);
      this.yDirection = new AtomicInteger(y);
   }
}

也就是说,int可能是错误的类型,术语flag意味着您应该使用Boolean,因为您的问题信息有限。

public final class Direction
{
   public final AtomicBoolean isXdirection;
   public final Atomicboolean isYdirection;

   public final Direction(final boolean x, final boolean y) 
   {  
      this.xDirection = new AtomicBoolean(x);
      this.yDirection = new AtomicBoolean(y);
   }
}

这也有线程安全的好处,以及final引用是不可变的,AtomicInteger/Boolean也是如此。

  

抵制创建伪全局引用的愿望,应该打开   一个传递给所有对象的对象的单个实例   需要读取当前状态的地方。