返回1而不是-1时,比较器无法正常工作

时间:2020-07-24 22:34:22

标签: sorting comparator

我有一个可以正常工作的比较器。

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;
    }
}

这是为什么?谢谢。

0 个答案:

没有答案