我有一个名为resourceItems的列表,其中包含ResourceItem对象。
public class ResourceItem {
private Long id;
private String name;
public ResourceItem(Long id, String name) {
this.id = id;
this.name = name;
}
// getters and setters...
}
public class SomeClass {
private List<ResourceItem> resourceItems = FindAllResourcesWebSerbice();
}
我想扩展列表中的对象以包括一个名为selected的布尔字段。
我尝试了几种扩展ResourceItem(参见下文)的类的变体,包括使用泛型的选项,但没有成功。我希望使用泛型进行重用的解决方案。
public class ExtendedResourceItem extends ResourceItem {
private boolean selected = false;
public ExtendedResourceItem() {
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
public class SomeClass {
private List<ResourceItem> resourceItems = FindAllResourcesWebSerbice();
private List<ExtendedResourceItem> extendedResourceItem = resourceItems;
}
任何帮助深表感谢。
最佳答案
假设ResourceItem
正确实现equals
和hashCode
,为什么不保留一组选定的选项:
Set<ResourceItem> selectedResourceItems = new HashSet<ResourceItem>();
然后,您可以在选中该集合时将其
add
放入集合中,而在取消选中时将其remove
删除,并在需要知道是否选中该集合时检查该集合contains
是否为一个。该解决方案与Michael Myers' comment关于使用
Map<ResourceItem, Boolean>
的方法非常相似。