| 22 | } |
| 23 | |
| 24 | public boolean remove(int val) { |
| 25 | if(!this.indexing.containsKey(val)) { |
| 26 | return false; |
| 27 | } |
| 28 | |
| 29 | int lastIndex = this.numbers.size() - 1; |
| 30 | int lastElement = this.numbers.get(lastIndex); |
| 31 | int indexElement = this.indexing.get(val); |
| 32 | |
| 33 | // Swap with last element |
| 34 | this.numbers.set(indexElement, lastElement); |
| 35 | |
| 36 | // Update indices [Add & Delete] |
| 37 | this.indexing.put(lastElement, indexElement); |
| 38 | this.indexing.remove(val); |
| 39 | |
| 40 | // Remove from list |
| 41 | this.numbers.remove(lastIndex); |
| 42 | return true; |
| 43 | } |
| 44 | |
| 45 | public int getRandom() { |
| 46 | int randomIndex = (int) (Math.random() * this.numbers.size()); |