Guava——Ordring

Ordring 

它是一款Guava实现的比较器,适用于实现了Collention接口的类,被用来构建复杂比较器。一个排序实例是一个特殊的比较器实例。排序仅仅采用依赖于比较器的方法,并将他们作为实例方法提供。

Creation

公共Orderings 由静态方法创建:

.natural() 返回一个Ordering

但更常用的方式是自己实现一个compare比较器

Ordering byLengthOrdering = new Ordering() {

  public int compare(String left, String right) {

    return Ints.compare(left.length(), right.length());

  }

};

chaining

Orderring 也包装了常用的排序,包括:

reverse: 返回倒序

nullsFirst():返回一个null排列在所有元素之前的序列

public 

    return new NullsFirstOrdering(this);

}

compound():返回一个采用特殊比较器来重排的序列

public  Ordering compound(Comparator

    return new CompoundOrdering(this, (Comparator)Preconditions.checkNotNull(secondaryComparator));

}

lexicographical():返回一个按照字典序排序的序列

public 

    return new LexicographicalOrdering(this);

}

onResultOf():通过将函数应用到它们并将结果与原始排序进行比较,返回一个排序值。

public  Ordering onResultOf(Function

    return new ByFunctionOrdering(function, this);

}

Application

Guava 提供了一系列方法操作和检查数据并排序。

public  List greatestOf(Iterable iterable, int k) {

    return this.reverse().leastOf(iterable, k);

}

//根据排序,返回迭代器中最大的几个元素

public boolean isOrdered(Iterable

    Iterator

    Object next;

    if (it.hasNext()) {

        for(Object prev = it.next(); it.hasNext(); prev = next) {

            next = it.next();

            if (this.compare(prev, next) > 0) {

                return false;

            }

        }

    }


    return true;

}

public abstract int compare(@Nullable T var1, @Nullable T var2);

//检测是否按照排序顺序

public 

    E[] array = (Object[])Iterables.toArray(elements);

    Arrays.sort(array, this);

    return Lists.newArrayList(Arrays.asList(array));

}

//返回特定排序的List

public 

    Object minSoFar;

    for(minSoFar = iterator.next(); iterator.hasNext(); minSoFar = this.min(minSoFar, iterator.next())) {

        ;

    }


    return minSoFar;

}

//找到最小值

你可能感兴趣的:(Guava——Ordring)