除了保留插入顺序外,还有一个现有功能使用 LinkedHashSet 来存储一组唯一元素。
如果特定元素已存在于 LinkedHashSet 中,则需要检索该元素。即当尝试添加元素时,该方法应该检查元素是否已经存在并返回现有元素。LinkedHashSet 中最多可以有 10000 个元素。
当前实现这一点的方法是在 LinkedHashSet 上使用迭代器
Class CustomObject {
String id;
String name;
CustomObject (String id, String name) {
this.id = id;
this.name = name;
}
LinkedHashMap<String, LinkedHashSet<CustomObject>> parentRecord = new LinkedHashMap<String, LinkedHashSet<CustomObject>>(4);
.
.
.
public CustomObject addCustomObject (CustomObject customObject)
//Assume the following child node not to be null
Set<CustomObject> child = parentRecord.get("customObjectName");
if (child.contains(customObject)) {
Iterator<CustomObject> it = child.iterator();
while (it.hasNext()) {
CustomObject node = it.next();
if (node.getId().equals(customObject.getId())) {
return node;
}
}
}
child.add(customObject);
return customObject;
}
}
是否有一种有效的替代数据结构方式可以
存储唯一值
如果尝试添加时已经存在,则返回特定元素
保留广告订单(如果可能)
由于要添加的 customObject 已经在集合中,因此返回 customObject 本身是有道理的。但是,由于我在节点内构建节点,因此以某种方式不起作用,因此使用了迭代器。返回的 customObject 可能有子节点。