Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2008 Mozilla Foundation
   *
   * Permission is hereby granted, free of charge, to any person obtaining a 
   * copy of this software and associated documentation files (the "Software"), 
   * to deal in the Software without restriction, including without limitation 
   * the rights to use, copy, modify, merge, publish, distribute, sublicense, 
   * and/or sell copies of the Software, and to permit persons to whom the 
   * Software is furnished to do so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in 
  * all copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  * DEALINGS IN THE SOFTWARE.
  */
 
 package nu.validator.collections;
 
 
 public final class TailBiasedSortedSet<E> extends AbstractSet<E> implements
         SortedSet<E> {
 
     private final class Node<F> {
         public final F value;
 
         public Node<F> next;
 
         public Node<F> prev;
        
        

Parameters:
value
next
 
         public Node(F valueNode<F> nextNode<F> prev) {
             this. = value;
             this. = next;
             this. = prev;
         }
     }
 
     private final class IteratorImpl implements Iterator<E> {
 
         private Node<E> next;
 
         private final Node<E> sentinel;
        
        

Parameters:
next
 
         IteratorImpl(Node<E> firstNode<E> sentinel) {
             this. = first;
             this. = sentinel;
         }
 
         public boolean hasNext() {
             return  != ;
         }
 
         public E next() {
             if ( == ) {
                 throw new NoSuchElementException();
             }
             E rv = .;
              = .;
             return rv;
         }
 
         public void remove() {
             throw new UnsupportedOperationException();
         }
 
     }
 
     private final Comparator<? super E> comparator;
 
     private final Node<E> head = new Node<E>(nullnullnull);
 
     private final Node<E> tail = new Node<E>(nullnullnull);
     
     private int size = 0;

    

Parameters:
comparator
 
     public TailBiasedSortedSet(Comparator<? super E> comparator) {
         this. = comparator;
         . = ;
        . = ;
    }
    public TailBiasedSortedSet() {
        this. = null;
        . = ;
        . = ;
    }
    
    public TailBiasedSortedSet(SortedSet<E> set) {
        this. = set.comparator();
        . = ;
        . = ;
        for (E e : set) {
            this.add(e);
        }
    }
    public TailBiasedSortedSet(Collection<? extends E> collection) {
        this. = null;
        . = ;
        . = ;
        for (E e : collection) {
            this.add(e);
        }
    }
    public Comparator<? super E> comparator() {
        return ;
    }
    @Override
    public Iterator<E> iterator() {
        return new IteratorImpl(.);
    }
    @Override
    public int size() {
        return ;
    }
    public E first() {
        Node<E> first = .;
        if (first == null) {
            throw new NoSuchElementException();
        } else {
            return first.value;
        }
    }
    public SortedSet<E> headSet(E toElement) {
        throw new UnsupportedOperationException();
    }
    public E last() {
        Node<E> last = .;
        if (last == null) {
            throw new NoSuchElementException();
        } else {
            return last.value;
        }
    }
    public SortedSet<E> subSet(E fromElement, E toElement) {
        throw new UnsupportedOperationException();
    }
    public SortedSet<E> tailSet(E fromElement) {
        throw new UnsupportedOperationException();
    }

    
    @Override
    public boolean add(E o) {
        Node<E> next = ;
        while (next.prev != ) {
            Node<E> prev = next.prev;
            int comp = compare(oprev.value);
            if (comp > 0) {
                next.prev = prev.next = new Node<E>(onextprev);
                ++;
                return true;
            } else if (comp == 0) {
                return false;
            }
            next = next.prev;
        }
        // if we haven't returned yet, this is less than
        next.prev = . = new Node<E>(onext);
        ++;
        return true;
    }
    private int compare(E one, E other) {
        if ( == null) {
            return ((Comparable<E>) one).compareTo(other);
        } else {
            return .compare(oneother);
        }
    }

    
    @Override
    public void clear() {
         = 0;
        . = ;
        . = ;
    }
New to GrepCode? Check out our FAQ X