class Person
{
int id;
String name;
}
我想创建一个TreeMap。使用的比较器是
Comparator<Person> comp = (e1, e2) -> e1.name.compareTo(e2.name);
所以我将根据person的name属性获得一个升序的树形图。
但是我想基于元素的id属性更新TreeMap,因为id是唯一元素。所以如果我得到一个Person对象,我应该得到 基于id而非名称的键值对。怎么可能?
答案 0 :(得分:1)
您可以将比较器更改为首先按名称进行比较,然后按ID进行比较:
Comparator<Person> comp = (e1, e2) -> {
int res = e1.name.compareTo(e2.name);
if (res == 0)
return Integer.compare(e1.id,e2.id);
else
return res;
};
这将确保按名称排序,以及由name和id确定的唯一性(即两个元素必须具有相同的名称和id才能被视为相同的元素)。这假设如果两个Person
具有相同的id
,则它们也具有相同的name
。
答案 1 :(得分:0)
TreeMap
只能有一个比较器。
这里你真正需要的是两个TreeMap
个对象,一个将名称映射到Person
个对象,另一个映射id到Person
个对象。
在一个地图中添加或删除条目时,需要对另一个地图进行相应的更改。