用java帮我实现一个comparator,比较字符串列表,字符串的优先级被定义到一个List中了。
当然可以!你可以使用Java的Comparator
接口来实现自定义的字符串比较器。假设你有一个优先级列表,字符串的优先级由这个列表中的位置决定。下面是一个示例代码:
import java.util.*;
public class CustomStringComparator implements Comparator<String> {
private List<String> priorityList;
public CustomStringComparator(List<String> priorityList) {
this.priorityList = priorityList;
}
@Override
public int compare(String s1, String s2) {
int index1 = priorityList.indexOf(s1);
int index2 = priorityList.indexOf(s2);
// 如果字符串不在优先级列表中,认为它们的优先级最低
if (index1 == -1) index1 = Integer.MAX_VALUE;
if (index2 == -1) index2 = Integer.MAX_VALUE;
return Integer.compare(index1, index2);
}
public static void main(String[] args) {
List<String> priorityList = Arrays.asList("high", "medium", "low");
CustomStringComparator comparator = new CustomStringComparator(priorityList);
List<String> stringsToSort = Arrays.asList("low", "medium", "high", "unknown");
Collections.sort(stringsToSort, comparator);
System.out.println(stringsToSort);
}
}
在这个示例中:
CustomStringComparator
类实现了Comparator<String>
接口,并重写了compare
方法。compare
方法根据字符串在优先级列表中的位置来比较两个字符串。如果字符串不在优先级列表中,则认为它们的优先级最低。main
方法中,我们创建了一个优先级列表和一个需要排序的字符串列表,然后使用Collections.sort
方法对字符串列表进行排序。运行这个程序,你会看到输出:
[high, medium, low, unknown]
这表明字符串列表已经根据优先级列表进行了