想避免在ArrayList中重复条目

pap*_*han 3 java

我正在寻找像ArrayList这样的对象,它可以让我避免重复的条目.例如,在将每个条目添加到ArrayList之前,它可能有一个调用'contains()'的方法.

ArrayList<String> al = new ArrayList<String>();
if(!al.contains("red")){
  al.add("red");
}
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

Mic*_*rry 8

ArrayLists和Lists通常不是为避免重复而设计的,它们被设计为一种集合,可以维护许多元素的顺序.如果你想要一个更适合这份工作的系列,你需要一套:

Set<String> set = new HashSet<String>();
Run Code Online (Sandbox Code Playgroud)

然后,您可以将所有想要的内容添加到集合中,它将永远不会包含重复的字符串.请注意,如果您使用自己编写的类,那么您需要实现equals()hashcode()使其正常工作.

如下面的评论,如果你仍然需要维护订单删除重复,那么LinkedHashSet是你的朋友.

  • 如果需要维护顺序,请使用`LinkedHashSet`. (3认同)