我目前正在研究一个简单的ID跟踪系统,用于我正在研究的“游戏”。我希望在任何给定的时间屏幕上都有几百个对象。
其中许多对象需要与其他特定对象进行交互,但这些对象很快就会被创建和销毁。
我想实现ID系统以跟踪使用哪个ID。
由于程序的性质,我希望能够在销毁对象并将其标记为可用后重用ID。
这是我如何有效地做到这一点的思考过程:
这样的事情:
IDTracker tracker = new IDTracker();
public boolean checkID(int numToCheck) {
return tracker.get(numToCheck);
}
//returns true if successful
public boolean takeID(int numToTake) {
if(!checkID(numToCheck)) {
tracker.set(3) = true;
return true;
}
return false;
}
//returns true if successful
public void releaseID(int numToRelease) {
if(checkID(numToCheck)) {
tracker.set(3) = false;
return true;
}
return false;
}
我知道如何使用List执行此操作,但这需要一个10k + ID的布尔对象。有什么建议吗?
答案 0 :(得分:2)
你需要的是一套。
https://docs.oracle.com/javase/7/docs/api/java/util/Set.html
不包含重复元素的集合。
Set<Integer> tracker = new HashSet<>();
public boolean checkID(int numToCheck) {
return tracker.contains(numToCheck);
}
public boolean takeID(int numToTake) {
if(!checkID(numToTake)) {
tracker.add(numToTake);
return true;
}
return false;
}
public void releaseID(int numToRelease) {
if(checkID(numToRelease)) {
tracker.remove(numToRelease);
return true;
}
return false;
}