code: public static Double largest(Iterator<Double> elements, int k) {
          Iterator<Double> oppositeElements = new Iterator<Double>() {
              /** {@inheritDoc} */
              @Override
              public boolean hasNext() {
                  return elements.hasNext();
              }
              
              /** {@inheritDoc} */
              @Override
              public Double next() {
                  return -elements.next(); //reverse the sign of every value
              }
          };
          return -smallest(oppositeElements,k); //reverse the sign of the retrieved value
      }
docs: Selects the kth largest element from an iterable object.
  
  @param elements
  @param k
  @return