使用Map<MyEntry, List<Obj>>
whereMyEntry
是一个包含父名称和名称的类:
public final class MyEntry
{
private final String parentName;
private final String name;
private final int hashCode;
public MyEntry(final String parentName, final String name)
{
this.parentName = parentName;
this.name = name;
hashCode = 31 * parentName.hashCode() + name.hashCode();
}
// Override .equals() and .hashCode()
@Override
public int hashCode()
{
return hashCode;
}
@Override
public boolean equals(final Object o)
{
if (this == o)
return true;
if (o == null)
return false;
if (getClass() != o.getClass())
return false;
final MyEntry other = (MyEntry) o;
return parentName.equals(other.parentName)
&& name.equals(other.name);
}
// Have a nice string representation
@Override
public String toString()
{
return "parent name: " + parentName + ", name: " + name;
}
}
例如,您可以在您的方法中有一个Obj
返回匹配MyEntry
对象的方法。此外,如果您使用 Guava,请查看MultiMap
.
您会注意到哈希码是预先计算的:因为MyEntry
类是不可变的,所以可以这样做。这允许非常快速地用作Map
.
(编辑:添加.toString()
)