java从排序树映射中获取值
我有一张分类地图
Map<RangeValues,String> cIndexes = new TreeMap(new StartIndexComparator());
其中key是包含两个整数值的类的对象
public class RangeValues {
private int startIndex;
private int endIndex;
}
所以,当我试图从该映射中访问值时,我得到的值是null
Set<RangeValues> keySet = cIndexes.keySet();
RangeValues[] keys = keySet.toArray(new RangeValues[keySet.size()]);
for(int index = 0; index < keys.length-1; index++)
{
**cIndexes.get(keys[index]) // this is giving null**
int nextIndex = keys[index+1].getStartIndex();
}
比较器的实现是
public class StartIndexComparator implements Comparator<RangeValues> {
@Override
public int compare(RangeValues r1, RangeValues r2) {
if(r1.getStartIndex() > r2.getStartIndex())
{
return 1;
}
else
{
return -1;
}
}
}
填图
RangeValues range = new RangeValues();
range.setStartIndex();
range.setEndIndex();
cIndexes.put(range,conjunctions.get(conjIndex));
如何使用对象作为键从该贴图中获取值
# 1 楼答案
您需要重写对象中用作键的equals和hashCode方法
上述equals和hashCode方法假设startIndex和endIndex都将参与决定类的两个对象是否相等