我每次都试图做一个不同的比较,具体取决于具体情况。 例如: 我有一个名为Line的类,在类中有字符串名称,int id和int扩展名 我希望能够通过名称OR id OR extension来比较2个不同的Line对象。
答案 0 :(得分:3)
如果你有两种不同的比较方案,你可能需要两个不同的Comparator
(或者可以配置一个,例如,通过如何比较的构造函数参数)
public class LineNameComparator implements Comparator<Line> {
@Override
public int compare (Line a, Line b) {
return a.getName().compareTo(b.getName());
}
}
public class LineIdComparator implements Comparator<Line> {
@Override
public int compare (Line a, Line b) {
return a.getIf().compareTo(b.getId());
}
}
public class LineExtensionComparator implements Comparator<Line> {
@Override
public int compare (Line a, Line b) {
return a.getExtension().compareTo(b.getExtension());
}
}
...然后根据您的需要使用它:
List<Line> list = ...
// Sort by name:
Collections.sort(list, new LineNameComparator());
// Sort by ID:
Collections.sort(list, new LineIdComparator());
// Sort by extension:
Collections.sort(list, new LineExtensionComparator());