我有一个要添加到的数组列表,只要该值尚未存储在其中即可。例如,如果我的数组是这样的:
H
LK
KL
LS
而我有值 LS,它不会被添加。但如果值为 A,它就会是。我不关心顺序或排序。只是信息是否在其中。
我在想代码应该是这样的:
value = A;
no = 0;
for (int o; arraylist.length; o++)
if (arraylist.get(o).equals(value)){
continue;
}else{
no++;
}
}
if (arraylist.length = no){
arraylist.add(value);
}
但必须有更简单的方法来做到这一点。 有谁知道更简洁的方法吗?
最佳答案
我会考虑使用 Set
而不是 ArrayList。集合是根据所有对象都是唯一的要求来定义的。 HashSet
是一个很好的默认选择,在这种情况下可能是您使用的更正确的数据结构,但这最终由您决定。
添加到集合时,如果对象已包含在集合中,add
方法将返回 false
,并且不会添加重复项。
如果您需要可预测的迭代顺序,您可以使用 LinkedHashSet。
This implementation differs from HashSet in that it maintains a doubly-linked list running through all of its entries. This linked list defines the iteration ordering, which is the order in which elements were inserted into the set (insertion-order)
最后,您可以考虑在 TreeSet 中使用可导航集。根据以上信息,排序看起来并不重要,因此它可能不是您的正确选择,但它是您的后兜里的好信息。
只要确保如果您要将自己的类的对象添加到 Set 中,您就会覆盖并正确覆盖 equals() 方法。不这样做将导致只比较引用,并会导致意外行为和令人头疼的问题。使用 @Override 注释来确保您正确覆盖,但我离题了。
关于java - 仅当对象不存在时才将对象添加到 java 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727655/