I am trying to sort an ArrayList<String> using custom Comparator. My requirement is that XX String should be the first String, others should follow natural ordering.
I need : [XX, XX, 1, 5, 9, A, D, G, Q, Z]
What I am getting is [1, 5, 9, A, D, G, Q, Z, XX, XX]
Following is my code:
public class Test {
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Z");
list.add("5");
list.add("D");
list.add("G");
list.add("XX");
list.add("9");
list.add("Q");
list.add("XX");
list.add("1");
list.add("A");
Collections.sort(list, new CustomComparator());
System.out.println(list);
}
}
class CustomComparator implements Comparator<String>
{
@Override
public int compare(String o1, String o2) {
if(o2.equals("XX")) {
return -1;
}
return o1.compareTo(o2);
}
}
EDIT: if i change comparator logic to:
@Override
public int compare(String o1, String o2) {
if(o2.equals("XX")) {
return 1;
}
return o1.compareTo(o2);
}
I am getting :
[1, XX, 9, A, Q, XX, 5, D, G, Z]
Please let me know how to proceed. Thanks in advance.