我遇到了这个要求的问题。我有这个片段:
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语句似乎不可能。
答案 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之类的东西来创建用户索引。您还应该考虑线程的安全性和性能。