我有一个可以正常工作的比较器。
import java.util.Comparator;
public class ComparatorContainsEMinusOne implements Comparator< String > {
public int compare( String s1, String s2 ) {
if ( s1.contains( "e" ) || s2.contains( "e" ) ) return -1;
return 0;
}
}
包含一个“ e”的2个字符串在列表的最前面。 [aex,e,j,SS,hhh,CCC]
这是我的使用方式:
private static void sort1( ) {
String [] array = new String [] { "j", "SS", "e", "hhh", "CCC", "aex" };
List l = Arrays.stream( array ).sorted( new ComparatorContainsEMinusOne() ).collect(Collectors.toList() );
System.out.println( l );
l = Arrays.stream( array ).sorted( new ComparatorContainsEPlusOne() ).collect(Collectors.toList() );
System.out.println( l );
}
但是,如果我更改Comparator以便它返回1而不是-1,则它不会像我期望的那样将包含“ e”的2个字符串放在列表的末尾。 [j,SS,e,hhh,CCC,aex]
import java.util.Comparator;
public class ComparatorContainsEPlusOne implements Comparator< String > {
public int compare( String s1, String s2 ) {
if ( s1.contains( "e" ) || s2.contains( "e" ) ) return 1;
return 0;
}
}
这是为什么?谢谢。