Java自动增量问题

时间:2015-02-09 04:59:00

标签: java oop auto-increment

我遇到了这个要求的问题。我有这个片段:

    private String id;
    private int age;
    private static int index;

    public Customer(int a) {
          this.id = a + "C" + index;
          index++;
          this.age = a;
    }

工作正常。但问题是,我希望每个年龄段的索引都会重置为1,例如< 10C1,10C2>当有2个10岁的顾客,如果你创建一个年龄为20岁的新顾客,它将回到< 20C1,20C2,..>。由于年龄没有限制所以if语句似乎不可能。

1 个答案:

答案 0 :(得分:1)

在用户中使用静态地图:

private String id;
private int age;
private static map indexMap = new HashMap();

public Customer(int a) {
      this.id = a + "C" + index;
      index++;
      this.age = a;
}

public synchronized static int getIndexOfAge(int age) {
    if (!indexMap.contains(age)) {
        indexMap.put(age, 1);
    }
    int theIndex = indexMap.get(age);
    theIndex++;
    indexMap.put(age, theIndex);
}

但我不得不说这不是一个很好的编码方式。您应该使用UserIndexFactory之类的东西来创建用户索引。您还应该考虑线程的安全性和性能。