Design Phone Directory

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 }

 

Guess you like

Origin www.cnblogs.com/beiyeqingteng/p/11333740.html