我有一个名为 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 的 boolean 字段。
我已经尝试了几种扩展 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>
.
关于java - 如何扩展列表中包含的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381774/