假设我有一个包含工人的列表,每个工人有3个字段:它的名称,他所在的部门(可以只是部门的名称或班级部门的对象)和他的工资.
Elvis Software Engineering 1000
Samba Mechanical Engineering 2000
Bamba Industrial Engineering 3000
Bisli Medical Engineering 4000
Kinder Electrical Engineering 1000
Elvis Software Engineering 9999
Run Code Online (Sandbox Code Playgroud)
现在我想按名字对它们进行排序,并将结果放入队列中.然后将队列放在地图中,从底部到顶部排序,以便排序后我想要的结果是:
Bamba Industrial Engineering 3000
Bisli Medical Engineering 4000
Elvis Software Engineering 1000
Elvis Software Engineering 9999
Samba Mechanical Engineering 2000
Kinder Electrical Engineering 1000
Run Code Online (Sandbox Code Playgroud)
我不允许使用Collection.sort(),因此我使用比较器按名称对工人进行排序,如果名称相同 - 按部门排序,如果部门相同 - 按类别排序薪水.这是我写的比较器:
class WorkerComparatorByName implements Comparator<Worker<?>> {
@Override
public int compare(Worker<?> w1, Worker<?> w2) {
int compareValue = w1.getName().compareTo(w2.getName());
if (compareValue != 0)
return compareValue;
compareValue = …Run Code Online (Sandbox Code Playgroud)