package call; import java.util.Comparator; public class AudioDeviceComparator implements Comparator<AudioDevice> { private static final String[] keywords = new String[] { "default" }; @Override public int compare(AudioDevice device1, AudioDevice device2) { if (device1.equals(device2)) { return 0; } final String name1 = device1.getMixerinfo().getName().toLowerCase(); final String name2 = device2.getMixerinfo().getName().toLowerCase(); return compareByKeyword(name1, name2, keywords, 0); } private int compareByKeyword(String name1, String name2, String[] keywords, int i) { if (i < keywords.length) { if (name1.contains(keywords[i])) { return name2.contains(keywords[i]) ? compareByKeyword(name1, name2, keywords, i + 1) : -1; } else { return name2.contains(keywords[i]) ? 1 : compareByKeyword(name1, name2, keywords, i + 1); } } else { return name1.compareTo(name2); } } }