我有一些看起来像这样的对象
var apptDetails
有时我想按名称查找项目,有时我想按ID查找项目。我显然可以通过
IEnumerable<DataRow> apptDetails
IEnumerable<EnumerableRowCollection> apptDetails
as well as:
DataTable dt = apptDetails.CopyToDataTable<DataRow>();
DataTable dt = apptDetails.CopyToDataTable<EnumerableRowCollection>();
但是,这需要维护两个地图,并且在某个时候,我(或另一个不熟悉双重地图的用户)将对代码进行更改,并且仅更新其中一个地图。
显而易见的解决方案是创建一个类来管理两个地图。这样的类是否已经存在(可能在第三方软件包中)?
我正在寻找可以让我做点事情的事情
class Widget {
String name;
int id;
// Intuitive constructor omitted
}
答案 0 :(得分:1)
一种简单的解决方案是,编写包含两个密钥的自己的密钥类。
class WidgetKey {
String id;
String name;
boolean equals() {...}
boolean hashCode() {...}
}
Map<WidgetKey, Widget> yourMap;
请注意,必须在WidgetKey类中实现equals和hashCode。否则put / get和其他地图方法将无法正常工作。