import java.util.*; public class SkipList,V> extends AbstractMap { private int m, size; private Elem l; private ArrayList p; private class Elem implements Entry { K key; V value; ArrayList next; public Elem(K k, V v) { key = k; value = v; next = new ArrayList(); } public V setValue(V v) { this.value = v; return value; } public K getKey() { return key; } public V getValue() { return value; } } public SkipList(int levels) { //InitSkipList(in m, out l) size = 0; m = levels; l = new Elem(null, null); int i=0; while(i(); } public Elem MapEmpty(Elem l)//Map_Empty { l.next.set(0,null); return l.next.get(0); } public Elem succ(Elem x) //succ { return x.next.get(0); } public ArrayList skip(K key){ //skip int i=0, j=0; Elem x=l; i=m-1; while(i>=0){ while(x.next.get(i)!=null && x.next.get(i).key.compareTo(key) < 0) { x=x.next.get(i); } p.add(j++,x); i--; } return p; } public V put(K key, V value){ //insert int i=0; p=skip(key); if (p.get(0).next.get(0) != null && p.get(0).next.get(0).key.equals(key)) { V panic = p.get(0).next.get(0).value; p.get(0).next.get(0).setValue(value); return panic; } Elem x=new Elem(key,value); while(i> entrySet() { return new MyEntrySet(); } private class MyEntrySet extends AbstractSet{ public Iterator> iterator(){ return new Iterator1(); } private class Iterator1 implements Iterator{ private Elem i = l; @Override public boolean hasNext() { return i.next.get(0) != null; } @Override public Elem next() { i = i.next.get(0); return i; } @Override public void remove(){ SkipList.this.remove(i.getKey()); } } @Override public int size() { return size; } } }