java - 仅当对象不存在时才将对象添加到 java 结构

标签 java arraylist

我有一个要添加到的数组列表,只要该值尚未存储在其中即可。例如,如果我的数组是这样的:

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 注释来确保您正确覆盖,但我离题了。

HashSet Javadocs

TreeSet Javadocs

LinkedHashSet Javadocs

关于java - 仅当对象不存在时才将对象添加到 java 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727655/

相关文章:

java - 从 ArrayList 复制在每次迭代时更新其数据的所有数据

java - 访问时,字符数组列表会意外转变成对象

java - 在 Java 中将 JSON 转换为 List<List<String>>

java - 尝试将变量放入 Java 中的对象时出现空指针异常

java - 在java中格式化包含日期的字符串时出现问题

Java 'CheckBox Node Tree Sample' DefaultMutableNode 没有任何监听器?

java - ArrayList 值差异

java - 删除 ArrayList 中的重复元素并在第一个元素后的括号中添加出现的总数

'0' 附近的 Java 语法不正确

java - 选择了 Android ListView 数组适配器