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.