matches
возвращает true, если вся строка соответствует заданному шаблону. find
пытается найти подстроку, которая соответствует шаблону.
Класс Arrays
имеет версии sort()
и binarySearch()
, для которых не требуется Comparator.
. Например, вы можете использовать версию Arrays.sort()
, которая просто принимает массив объектов . Эти методы вызывают метод compareTo()
объектов в массиве.
Решение для Java 8 основано на java.util.Comparator.comparing (...) :
Comparator<String> c = Comparator.comparing(String::toString);
или
Comparator<String> c = Comparator.comparing((String x) -> x);
Хорошо, это несколько лет спустя, но с java 8 вы можете использовать Comparator.naturalOrder ():
http://docs.oracle.com/javase/8/docs/api/ java / util / Comparator.html # naturalOrder -
Из javadoc:
static <T extends Comparable<? super T>> Comparator<T> naturalOrder()
Возвращает компаратор, который сравнивает сопоставимые объекты в естественном порядке. Возвращенный компаратор является сериализуемым и выдает исключение NullPointerException при сравнении нуля.
Это общий Comparator
для любого вида Comparable
объекта, а не только String
:
package util;
import java.util.Comparator;
/**
* The Default Comparator for classes implementing Comparable.
*
* @param <E> the type of the comparable objects.
*
* @author Michael Belivanakis (michael.gr)
*/
public final class DefaultComparator<E extends Comparable<E>> implements Comparator<E>
{
@SuppressWarnings( "rawtypes" )
private static final DefaultComparator<?> INSTANCE = new DefaultComparator();
/**
* Get an instance of DefaultComparator for any type of Comparable.
*
* @param <T> the type of Comparable of interest.
*
* @return an instance of DefaultComparator for comparing instances of the requested type.
*/
public static <T extends Comparable<T>> Comparator<T> getInstance()
{
@SuppressWarnings("unchecked")
Comparator<T> result = (Comparator<T>)INSTANCE;
return result;
}
private DefaultComparator()
{
}
@Override
public int compare( E o1, E o2 )
{
if( o1 == o2 )
return 0;
if( o1 == null )
return 1;
if( o2 == null )
return -1;
return o1.compareTo( o2 );
}
}
Как использовать с String
:
Comparator<String> stringComparator = DefaultComparator.getInstance();
Кроме того, если вам нужно сравнение без учета регистра, в последних версиях Java класс String
содержит поле public static final
с именем CASE_INSENSITIVE_ORDER
, которое имеет тип Comparator<String>
, как я недавно узнал. Таким образом, вы можете выполнить свою работу, используя String.CASE_INSENSITIVE_ORDER
.