Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  
    var NaturalOrderComparator = ComparableComparatorFunc(nil)
    
      View Source
      
  
var ReverseOrderComparator = NaturalOrderComparator.Reversed()
    Functions ¶
This section is empty.
Types ¶
type AbstractIteratorClass ¶
func (*AbstractIteratorClass) ForEachRemaining ¶
func (iter *AbstractIteratorClass) ForEachRemaining(ctx context.Context, action consumer.Consumer)
func (*AbstractIteratorClass) HasNext ¶
func (iter *AbstractIteratorClass) HasNext() bool
func (*AbstractIteratorClass) Next ¶
func (iter *AbstractIteratorClass) Next() interface{}
func (*AbstractIteratorClass) Remove ¶
func (iter *AbstractIteratorClass) Remove()
type Comparable ¶
type Comparable interface {
	/**
	 * Compares this object with the specified object for order.  Returns a
	 * negative integer, zero, or a positive integer as this object is less
	 * than, equal to, or greater than the specified object.
	 *
	 * <p>The implementor must ensure
	 * {@code sgn(x.compareTo(y)) == -sgn(y.compareTo(x))}
	 * for all {@code x} and {@code y}.  (This
	 * implies that {@code x.compareTo(y)} must throw an exception iff
	 * {@code y.compareTo(x)} throws an exception.)
	 *
	 * <p>The implementor must also ensure that the relation is transitive:
	 * {@code (x.compareTo(y) > 0 && y.compareTo(z) > 0)} implies
	 * {@code x.compareTo(z) > 0}.
	 *
	 * <p>Finally, the implementor must ensure that {@code x.compareTo(y)==0}
	 * implies that {@code sgn(x.compareTo(z)) == sgn(y.compareTo(z))}, for
	 * all {@code z}.
	 *
	 * <p>It is strongly recommended, but <i>not</i> strictly required that
	 * {@code (x.compareTo(y)==0) == (x.equals(y))}.  Generally speaking, any
	 * class that implements the {@code Comparable} interface and violates
	 * this condition should clearly indicate this fact.  The recommended
	 * language is "Note: this class has a natural ordering that is
	 * inconsistent with equals."
	 *
	 * <p>In the foregoing description, the notation
	 * {@code sgn(}<i>expression</i>{@code )} designates the mathematical
	 * <i>signum</i> function, which is defined to return one of {@code -1},
	 * {@code 0}, or {@code 1} according to whether the value of
	 * <i>expression</i> is negative, zero, or positive, respectively.
	 *
	 * @param   o the object to be compared.
	 * @return  a negative integer, zero, or a positive integer as this object
	 *          is less than, equal to, or greater than the specified object.
	 *
	 * @throws NullPointerException if the specified object is null
	 * @throws ClassCastException if the specified object's type prevents it
	 *         from being compared to this object.
	 */
	CompareTo(o interface{}) int
}
    *
- This interface imposes a total ordering on the objects of each class that
 - implements it. This ordering is referred to as the class's <i>natural
 - ordering</i>, and the class's {@code compareTo} method is referred to as
 - its <i>natural comparison method</i>.<p> *
 - Lists (and arrays) of objects that implement this interface can be sorted
 - automatically by {@link Collections#sort(List) Collections.sort} (and
 - {@link Arrays#sort(Object[]) Arrays.sort}). Objects that implement this
 - interface can be used as keys in a {@linkplain SortedMap sorted map} or as
 - elements in a {@linkplain SortedSet sorted set}, without the need to
 - specify a {@linkplain Comparator comparator}.<p> *
 - The natural ordering for a class {@code C} is said to be <i>consistent
 - with equals</i> if and only if {@code e1.compareTo(e2) == 0} has
 - the same boolean value as {@code e1.equals(e2)} for every
 - {@code e1} and {@code e2} of class {@code C}. Note that {@code null}
 - is not an instance of any class, and {@code e.compareTo(null)} should
 - throw a {@code NullPointerException} even though {@code e.equals(null)}
 - returns {@code false}.<p> *
 - It is strongly recommended (though not required) that natural orderings be
 - consistent with equals. This is so because sorted sets (and sorted maps)
 - without explicit comparators behave "strangely" when they are used with
 - elements (or keys) whose natural ordering is inconsistent with equals. In
 - particular, such a sorted set (or sorted map) violates the general contract
 - for set (or map), which is defined in terms of the {@code equals}
 - method.<p> *
 - For example, if one adds two keys {@code a} and {@code b} such that
 - {@code (!a.equals(b) && a.compareTo(b) == 0)} to a sorted
 - set that does not use an explicit comparator, the second {@code add}
 - operation returns false (and the size of the sorted set does not increase)
 - because {@code a} and {@code b} are equivalent from the sorted set's
 - perspective.<p> *
 - Virtually all Java core classes that implement {@code Comparable} have natural
 - orderings that are consistent with equals. One exception is
 - {@code java.math.BigDecimal}, whose natural ordering equates
 - {@code BigDecimal} objects with equal values and different precisions
 - (such as 4.0 and 4.00).<p> *
 - For the mathematically inclined, the <i>relation</i> that defines
 - the natural ordering on a given class C is:<pre>{@code
 - {(x, y) such that x.compareTo(y) <= 0}.
 - }</pre> The <i>quotient</i> for this total order is: <pre>{@code
 - {(x, y) such that x.compareTo(y) == 0}.
 - }</pre> *
 - It follows immediately from the contract for {@code compareTo} that the
 - quotient is an <i>equivalence relation</i> on {@code C}, and that the
 - natural ordering is a <i>total order</i> on {@code C}. When we say that a
 - class's natural ordering is <i>consistent with equals</i>, we mean that the
 - quotient for the natural ordering is the equivalence relation defined by
 - the class's {@link Object#equals(Object) equals(Object)} method:<pre>
 - {(x, y) such that x.equals(y)}. </pre><p> *
 - This interface is a member of the
 - <a href="{@docRoot}/java/util/package-summary.html#CollectionsFramework">
 - Java Collections Framework</a>. *
 - @param <T> the type of objects that this object may be compared to *
 - @author Josh Bloch
 - @see java.util.Comparator
 - @since 1.2
 
type ComparableComparatorFunc ¶
type ComparableComparatorFunc func(a, b interface{}) int
    func (ComparableComparatorFunc) Compare ¶
func (f ComparableComparatorFunc) Compare(a, b interface{}) int
func (ComparableComparatorFunc) Reversed ¶
func (f ComparableComparatorFunc) Reversed() Comparator
func (ComparableComparatorFunc) ThenComparing ¶
func (f ComparableComparatorFunc) ThenComparing(after Comparator) Comparator
type ComparableFunc ¶
type ComparableFunc func(o interface{}) int
    func (ComparableFunc) CompareTo ¶
func (f ComparableFunc) CompareTo(o interface{}) int
type Comparator ¶
type Comparator interface {
	/**
	 * Compares its two arguments for order.  Returns a negative integer,
	 * zero, or a positive integer as the first argument is less than, equal
	 * to, or greater than the second.<p>
	 *
	 * The implementor must ensure that {@code sgn(compare(x, y)) ==
	 * -sgn(compare(y, x))} for all {@code x} and {@code y}.  (This
	 * implies that {@code compare(x, y)} must throw an exception if and only
	 * if {@code compare(y, x)} throws an exception.)<p>
	 *
	 * The implementor must also ensure that the relation is transitive:
	 * {@code ((compare(x, y)>0) && (compare(y, z)>0))} implies
	 * {@code compare(x, z)>0}.<p>
	 *
	 * Finally, the implementor must ensure that {@code compare(x, y)==0}
	 * implies that {@code sgn(compare(x, z))==sgn(compare(y, z))} for all
	 * {@code z}.<p>
	 *
	 * It is generally the case, but <i>not</i> strictly required that
	 * {@code (compare(x, y)==0) == (x.equals(y))}.  Generally speaking,
	 * any comparator that violates this condition should clearly indicate
	 * this fact.  The recommended language is "Note: this comparator
	 * imposes orderings that are inconsistent with equals."<p>
	 *
	 * In the foregoing description, the notation
	 * {@code sgn(}<i>expression</i>{@code )} designates the mathematical
	 * <i>signum</i> function, which is defined to return one of {@code -1},
	 * {@code 0}, or {@code 1} according to whether the value of
	 * <i>expression</i> is negative, zero, or positive, respectively.
	 *
	 * @param o1 the first object to be compared.
	 * @param o2 the second object to be compared.
	 * @return a negative integer, zero, or a positive integer as the
	 *         first argument is less than, equal to, or greater than the
	 *         second.
	 * @throws NullPointerException if an argument is null and this
	 *         comparator does not permit null arguments
	 * @throws ClassCastException if the arguments' types prevent them from
	 *         being compared by this comparator.
	 */
	Compare(a, b interface{}) int
	/**
	 * Returns a lexicographic-order comparator with another comparator.
	 * If this {@code Comparator} considers two elements equal, i.e.
	 * {@code compare(a, b) == 0}, {@code other} is used to determine the order.
	 *
	 * <p>The returned comparator is serializable if the specified comparator
	 * is also serializable.
	 *
	 * @apiNote
	 * For example, to sort a collection of {@code String} based on the length
	 * and then case-insensitive natural ordering, the comparator can be
	 * composed using following code,
	 *
	 * <pre>{@code
	 *     Comparator<String> cmp = Comparator.comparingInt(String::length)
	 *             .thenComparing(String.CASE_INSENSITIVE_ORDER);
	 * }</pre>
	 *
	 * @param  other the other comparator to be used when this comparator
	 *         compares two objects that are equal.
	 * @return a lexicographic-order comparator composed of this and then the
	 *         other comparator
	 * @throws NullPointerException if the argument is null.
	 * @since 1.8
	 */
	ThenComparing(after Comparator) Comparator
	Reversed() Comparator
}
    func AlwaysEqualComparator ¶
func AlwaysEqualComparator() Comparator
AlwaysEqualComparator returns 0 always
func DefaultComparator ¶
func DefaultComparator() Comparator
DefaultComparator returns 0 if a == b, returns -1 otherwise
func NeverEqualComparator ¶
func NeverEqualComparator() Comparator
NeverEqualComparator returns -1 always
func NullFirst ¶
func NullFirst(cmp Comparator, nilFirst bool) Comparator
*
- Returns a null-friendly comparator that considers {@code null} to be
 - less than non-null. When both are {@code null}, they are considered
 - equal. If both are non-null, the specified {@code Comparator} is used
 - to determine the order. If the specified comparator is {@code null},
 - then the returned comparator considers all non-null values to be equal. *
 - <p>The returned comparator is serializable if the specified comparator
 - is serializable. *
 - @param <T> the type of the elements to be compared
 - @param comparator a {@code Comparator} for comparing non-null values
 - @return a comparator that considers {@code null} to be less than
 - non-null, and compares non-null objects with the supplied
 - {@code Comparator}.
 - @since 1.8
 
type ComparatorFunc ¶
type ComparatorFunc func(a, b interface{}) int
    The HandlerFunc type is an adapter to allow the use of ordinary functions as HTTP handlers. If f is a function with the appropriate signature, HandlerFunc(f) is a Handler that calls f.
func (ComparatorFunc) Compare ¶
func (f ComparatorFunc) Compare(a, b interface{}) int
Compare calls f(a,b).
func (ComparatorFunc) Reversed ¶
func (f ComparatorFunc) Reversed() Comparator
func (ComparatorFunc) ThenComparing ¶
func (f ComparatorFunc) ThenComparing(after Comparator) Comparator
type Iterator ¶
type Iterator interface {
	/**
	 * Returns {@code true} if the iteration has more elements.
	 * (In other words, returns {@code true} if {@link #next} would
	 * return an element rather than throwing an exception.)
	 *
	 * @return {@code true} if the iteration has more elements
	 */
	HasNext() bool
	/**
	 * Returns the next element in the iteration.
	 *
	 * @return the next element in the iteration
	 * @throws NoSuchElementException if the iteration has no more elements
	 */
	Next() interface{}
	/**
	 * Removes from the underlying collection the last element returned
	 * by this iterator (optional operation).  This method can be called
	 * only once per call to {@link #next}.
	 * <p>
	 * The behavior of an iterator is unspecified if the underlying collection
	 * is modified while the iteration is in progress in any way other than by
	 * calling this method, unless an overriding class has specified a
	 * concurrent modification policy.
	 * <p>
	 * The behavior of an iterator is unspecified if this method is called
	 * after a call to the {@link #forEachRemaining forEachRemaining} method.
	 *
	 * @implSpec
	 * The default implementation throws an instance of
	 * {@link UnsupportedOperationException} and performs no other action.
	 *
	 * @throws UnsupportedOperationException if the {@code remove}
	 *         operation is not supported by this iterator
	 *
	 * @throws IllegalStateException if the {@code next} method has not
	 *         yet been called, or the {@code remove} method has already
	 *         been called after the last call to the {@code next}
	 *         method
	 */
	Remove()
	/**
	 * Performs the given action for each remaining element until all elements
	 * have been processed or the action throws an exception.  Actions are
	 * performed in the order of iteration, if that order is specified.
	 * Exceptions thrown by the action are relayed to the caller.
	 * <p>
	 * The behavior of an iterator is unspecified if the action modifies the
	 * collection in any way (even by calling the {@link #remove remove} method
	 * or other mutator methods of {@code Iterator} subtypes),
	 * unless an overriding class has specified a concurrent modification policy.
	 * <p>
	 * Subsequent behavior of an iterator is unspecified if the action throws an
	 * exception.
	 *
	 * @implSpec
	 * <p>The default implementation behaves as if:
	 * <pre>{@code
	 *     while (hasNext())
	 *         action.accept(next());
	 * }</pre>
	 *
	 * @param action The action to be performed for each element
	 * @throws NullPointerException if the specified action is null
	 * @since 1.8
	 */
	ForEachRemaining(ctx context.Context, action consumer.Consumer)
}
    type NullComparator ¶
type NullComparator struct {
	// contains filtered or unexported fields
}
    Null-friendly comparators
func NewNullComparator ¶
func NewNullComparator(nilFirst bool, real Comparator) *NullComparator
func (*NullComparator) Compare ¶
func (n *NullComparator) Compare(a, b interface{}) int
func (*NullComparator) Reversed ¶
func (n *NullComparator) Reversed() Comparator
func (*NullComparator) ThenComparing ¶
func (n *NullComparator) ThenComparing(other Comparator) Comparator
type Runnable ¶
type Runnable interface {
	/**
	 * When an object implementing interface <code>Runnable</code> is used
	 * to create a thread, starting the thread causes the object's
	 * <code>run</code> method to be called in that separately executing
	 * thread.
	 * <p>
	 * The general contract of the method <code>run</code> is that it may
	 * take any action whatsoever.
	 *
	 * @see     java.lang.Thread#run()
	 */
	Run()
}
    *
- The <code>Runnable</code> interface should be implemented by any
 - class whose instances are intended to be executed by a thread. The
 - class must define a method of no arguments called <code>run</code>.
 - <p>
 - This interface is designed to provide a common protocol for objects that
 - wish to execute code while they are active. For example,
 - <code>Runnable</code> is implemented by class <code>Thread</code>.
 - Being active simply means that a thread has been started and has not
 - yet been stopped.
 - <p>
 - In addition, <code>Runnable</code> provides the means for a class to be
 - active while not subclassing <code>Thread</code>. A class that implements
 - <code>Runnable</code> can run without subclassing <code>Thread</code>
 - by instantiating a <code>Thread</code> instance and passing itself in
 - as the target. In most cases, the <code>Runnable</code> interface should
 - be used if you are only planning to override the <code>run()</code>
 - method and no other <code>Thread</code> methods.
 - This is important because classes should not be subclassed
 - unless the programmer intends on modifying or enhancing the fundamental
 - behavior of the class. *
 - @author Arthur van Hoff
 - @see java.lang.Thread
 - @see java.util.concurrent.Callable
 - @since 1.0
 
      
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| 
         
          
            consumer
            
            
          
           
      A sequence of elements supporting sequential and parallel aggregate operations. 
         | 
      A sequence of elements supporting sequential and parallel aggregate operations. | 
| 
       object consists of {@code static} utility methods for operating on objects, or checking certain conditions before operation. 
         | 
      object consists of {@code static} utility methods for operating on objects, or checking certain conditions before operation. | 
| 
         
          
            internal/preconditions
            
            
          
           
      Utility methods to check if state or arguments are correct. 
         | 
      Utility methods to check if state or arguments are correct. | 
| 
       A sequence of elements supporting sequential and parallel aggregate operations. 
         | 
      A sequence of elements supporting sequential and parallel aggregate operations. | 
 Click to show internal directories. 
   Click to hide internal directories.