Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DVLListe<T> extends AbstractListe<T> {
- private class Item {
- public Item prev;
- public Item next;
- public T value;
- }
- private Item first;
- private Item last;
- private int size;
- public boolean isEmpty() {
- return first == null;
- }
- private Item getItem(int pos) {
- Item current = first;
- for (int i = 0; i < pos; ++i) {
- current = current.next;
- }
- return current;
- }
- public void add(int pos, T e) {
- Item item = new Item();
- item.value = e;
- item.next = getItem(pos);
- if (item.next == null) {
- item.prev = last;
- last = item;
- }
- else {
- item.prev = item.next.prev;
- item.next.prev = item;
- }
- if (item.prev == null) {
- first = item;
- }
- else {
- item.prev.next = item;
- }
- ++size;
- }
- private T removeItem(Item item) {
- if (item.prev == null) {
- first = item.next;
- }
- else {
- item.prev.next = item.next;
- }
- if (item.next == null) {
- last = item.prev;
- }
- else {
- item.next.prev = item.prev;
- }
- return item.value;
- }
- public T remove(int pos) {
- if (isEmpty()) {
- throw new java.util.NoSuchElementException();
- }
- --size;
- return removeItem(getItem(pos));
- }
- public class Iterator implements java.util.Iterator<T> {
- private Item current;
- public Iterator() {
- current = first;
- }
- public Iterator(int pos) {
- current = getItem(pos);
- }
- public boolean hasNext() {
- return current != null;
- }
- public T next() {
- if (!hasNext()) {
- throw new java.util.NoSuchElementException();
- }
- T e = current.value;
- current = current.next;
- return e;
- }
- public void remove() {
- if (isEmpty() || current == first) {
- throw new java.util.NoSuchElementException();
- }
- removeItem(current == null ? last : current.prev);
- --size;
- }
- }
- public Iterator iterator() {
- return new Iterator();
- }
- public Iterator iterator(int pos) {
- return new Iterator(pos);
- }
- @Override
- public T get(int pos) {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- return getItem(pos).value;
- }
- @Override
- public T set(int pos, T e) {
- if(getItem(pos) == null){
- throw new java.util.NoSuchElementException();
- }
- Item item = getItem(pos);
- T e1 = item.value;
- item.value = e;
- return e1;
- }
- @Override
- public int size() {
- return size;
- }
- @Override
- public void addFirst(T e) {
- add(0,e);
- }
- @Override
- public void addLast(T e) {
- add(size(),e);
- }
- @Override
- public T removeFirst() {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- T e = remove(0);
- return e;
- }
- @Override
- public T removeLast() {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- T e = remove(size()-1);
- return e;
- }
- @Override
- public T getFirst() {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- return getItem(0).value;
- }
- @Override
- public T getLast() {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- return getItem(size()-1).value;
- }
- @Override
- public T setFirst(T e) {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- Item item = getItem(0);
- T e1 = item.value;
- item.value = e;
- return e1;
- }
- @Override
- public T setLast(T e) {
- if(isEmpty()){
- throw new java.util.NoSuchElementException();
- }
- Item item = getItem(size()-1);
- T e1 = item.value;
- item.value = e;
- return e1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement