我在 java 中有一个自写的比较器,用于比较两个名称字符串。
public class NamesSorter implements Comparator<EntityBean>{
@Override
public int compare(EntityBean a1, EntityBean a2) {
return a1.getName().compareToIgnoreCase(a2.getName());
}
}
使用这个排序器的主要代码
final Set<EntityBean> treeSet = new TreeSet<EntityBean>(new NamesSorter()); final List<EntityBean> firstListToCompare=display.getAvailablePeople().getItems(); final List<EntityBean> SecondListToCompare=display.getAvailablePeople().getItems(); treeSet.addAll(firstListToCompare); treeSet.addAll(secondListToCompare);
当我使用以下输入运行此代码时
firstListToCompare amelia,george,megan
secondListToCompare George Wash,Fang。
结果是
阿米莉亚、方、乔治、梅根、乔治·沃什。
如果我在比较器中有一个忽略案例,为什么要将 George Wash 推到最后?
getName 方法。
public String getName() { 返回名称;}
任何在两个字符串之间有空格的名称,例如 George Wash(在 George 和 Wash 之间有空格)都会进入列表末尾。为什么会这样?