Design a Phone Directory which supports the following operations:
get: Provide a number which is not assigned to anyone.
check: Check if a number is available or not.
release: Recycle or release a number.
1 public class PhoneDirectory { 2 Set<Integer> used = new HashSet<>(); 3 Queue<Integer> available = new LinkedList<>(); 4 int max; 5 6 public PhoneDirectory(int maxNumbers) { 7 max = maxNumbers; 8 for (int i = 0; i < maxNumbers; i++) { 9 available.offer(i); 10 } 11 } 12 13 public int get() { 14 Integer ret = available.poll(); 15 if (ret == null) { 16 return -1; 17 } 18 used.add(ret); 19 return ret; 20 } 21 22 public boolean check(int number) { 23 if (number >= max || number < 0) { 24 return false; 25 } 26 return !used.contains(number); 27 } 28 29 public void release(int number) { 30 if (used.remove(number)) { 31 available.offer(number); 32 } 33 } 34 }
原文:https://www.cnblogs.com/beiyeqingteng/p/11333740.html