Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. import java.util.AbstractSet;
  2. import java.util.Set;
  3. import java.util.Iterator;
  4.  
  5. public class IntSparseSet extends AbstractSet<Integer> {
  6. private int[] sparse, dense;
  7. private int n, low, high;
  8. public IntSparseSet(int low, int high) {
  9. this.low = low;
  10. this.high = high;
  11. sparse = new int[high-low];
  12. dense = new int[high-low];
  13. for(int i=0;i<high-low;i++)
  14. {
  15. sparse[i]=0;
  16. dense[i]=0;
  17. }
  18. n = 0;
  19. }
  20. public boolean is(Integer x){
  21. if (low<=x && x<high) return true;
  22. else return false;
  23. }
  24. public boolean contains(Object x) {
  25. if (low<=(Integer)x && (Integer)x<high){
  26. if (sparse[(Integer)x-low]<n && dense[sparse[(Integer)x-low]]==(Integer)x) return true;
  27. else return false;
  28. }
  29. else return false;
  30. }
  31. public boolean add(Integer x) {
  32. if (low<=x && x<high && sparse[x-low]< n && dense[sparse[x-low]]==x || (low>x || x>=high)) return false;
  33. dense[n] = x;
  34. sparse[x-low] = n;
  35. n++;
  36. return true;
  37. }
  38.  
  39. public boolean remove(Object x) {
  40. if (!this.contains((Integer)x)) return false;
  41. n--;
  42. dense[sparse[(Integer)x-low]] = dense[n];
  43. sparse[dense[n]-low] = sparse[(Integer)x-low];
  44. return true;
  45. }
  46. public void clear() {
  47. n=0;
  48. }
  49. public int size() {
  50. return n;
  51. }
  52.  
  53. public Iterator<Integer> iterator() {
  54. Iterator<Integer> it = new Iterator<Integer>() {
  55. private int i=0;
  56. private int l=0;
  57. public boolean hasNext() {
  58. if (i< n) return true;
  59. else return false;
  60. }
  61.  
  62. public Integer next() {
  63. return dense[i++]+l;
  64. }
  65. public void remove() {
  66. int x = dense[i-1]+l;
  67. n--;
  68. dense[sparse[x-low]] = dense[n];
  69. sparse[dense[n]-low] = sparse[x-low];
  70. }
  71. };
  72. return it;
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement