Advertisement
Rednaxela

Untitled

May 29th, 2014
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. public class DVLListe<T> extends AbstractListe<T> {
  2. private class Item {
  3. public Item prev;
  4. public Item next;
  5. public T value;
  6. }
  7.  
  8. private Item first;
  9. private Item last;
  10. private int size;
  11.  
  12. public boolean isEmpty() {
  13. return first == null;
  14. }
  15.  
  16. private Item getItem(int pos) {
  17. Item current = first;
  18. for (int i = 0; i < pos; ++i) {
  19. current = current.next;
  20. }
  21. return current;
  22. }
  23.  
  24. public void add(int pos, T e) {
  25. Item item = new Item();
  26. item.value = e;
  27. item.next = getItem(pos);
  28.  
  29. if (item.next == null) {
  30. item.prev = last;
  31. last = item;
  32. }
  33. else {
  34. item.prev = item.next.prev;
  35. item.next.prev = item;
  36. }
  37. if (item.prev == null) {
  38. first = item;
  39. }
  40. else {
  41. item.prev.next = item;
  42. }
  43.  
  44. ++size;
  45. }
  46.  
  47. private T removeItem(Item item) {
  48. if (item.prev == null) {
  49. first = item.next;
  50. }
  51. else {
  52. item.prev.next = item.next;
  53. }
  54. if (item.next == null) {
  55. last = item.prev;
  56. }
  57. else {
  58. item.next.prev = item.prev;
  59. }
  60. return item.value;
  61. }
  62.  
  63. public T remove(int pos) {
  64. if (isEmpty()) {
  65. throw new java.util.NoSuchElementException();
  66. }
  67. --size;
  68. return removeItem(getItem(pos));
  69. }
  70.  
  71. public class Iterator implements java.util.Iterator<T> {
  72. private Item current;
  73.  
  74. public Iterator() {
  75. current = first;
  76. }
  77. public Iterator(int pos) {
  78. current = getItem(pos);
  79. }
  80. public boolean hasNext() {
  81. return current != null;
  82. }
  83. public T next() {
  84. if (!hasNext()) {
  85. throw new java.util.NoSuchElementException();
  86. }
  87. T e = current.value;
  88. current = current.next;
  89. return e;
  90. }
  91. public void remove() {
  92. if (isEmpty() || current == first) {
  93. throw new java.util.NoSuchElementException();
  94. }
  95. removeItem(current == null ? last : current.prev);
  96. --size;
  97. }
  98. }
  99.  
  100. public Iterator iterator() {
  101. return new Iterator();
  102. }
  103.  
  104. public Iterator iterator(int pos) {
  105. return new Iterator(pos);
  106. }
  107.  
  108. @Override
  109. public T get(int pos) {
  110. if(isEmpty()){
  111. throw new java.util.NoSuchElementException();
  112.  
  113. }
  114. return getItem(pos).value;
  115. }
  116.  
  117. @Override
  118. public T set(int pos, T e) {
  119. if(getItem(pos) == null){
  120. throw new java.util.NoSuchElementException();
  121.  
  122. }
  123. Item item = getItem(pos);
  124. T e1 = item.value;
  125. item.value = e;
  126.  
  127.  
  128. return e1;
  129. }
  130.  
  131. @Override
  132. public int size() {
  133.  
  134. return size;
  135. }
  136.  
  137. @Override
  138. public void addFirst(T e) {
  139. add(0,e);
  140.  
  141. }
  142.  
  143. @Override
  144. public void addLast(T e) {
  145. add(size(),e);
  146.  
  147. }
  148.  
  149. @Override
  150. public T removeFirst() {
  151. if(isEmpty()){
  152. throw new java.util.NoSuchElementException();
  153. }
  154. T e = remove(0);
  155.  
  156. return e;
  157. }
  158.  
  159. @Override
  160. public T removeLast() {
  161. if(isEmpty()){
  162. throw new java.util.NoSuchElementException();
  163. }
  164. T e = remove(size()-1);
  165.  
  166. return e;
  167. }
  168.  
  169. @Override
  170. public T getFirst() {
  171. if(isEmpty()){
  172. throw new java.util.NoSuchElementException();
  173. }
  174. return getItem(0).value;
  175. }
  176.  
  177. @Override
  178. public T getLast() {
  179. if(isEmpty()){
  180. throw new java.util.NoSuchElementException();
  181. }
  182. return getItem(size()-1).value;
  183. }
  184.  
  185. @Override
  186. public T setFirst(T e) {
  187. if(isEmpty()){
  188. throw new java.util.NoSuchElementException();
  189. }
  190.  
  191. Item item = getItem(0);
  192. T e1 = item.value;
  193. item.value = e;
  194.  
  195. return e1;
  196. }
  197.  
  198. @Override
  199. public T setLast(T e) {
  200. if(isEmpty()){
  201. throw new java.util.NoSuchElementException();
  202. }
  203.  
  204. Item item = getItem(size()-1);
  205. T e1 = item.value;
  206. item.value = e;
  207. return e1;
  208. }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement