ArrayList中的唯一项

时间:2014-05-04 05:52:54

标签: java arraylist

通过扩展ArrayList或使用其他容器来确保ArrayList列表的所有项目唯一的推荐方法是什么?

class ProList extends ArrayList
{
    public <E> boolean super_add(E e)
    {
        if(this.contains(e)) {
            System.out.println("Item not added because it exists already.");
            return false;
        }
        else
            return this.add(e);
    }
};

以上的作品,但它充满警告,看到有点hacky ......

2 个答案:

答案 0 :(得分:4)

如果你想维护插入顺序和唯一性(由hashCode()和equals()定义,你需要在任何进入colelction的类中正确覆盖和实现),使用LinkedHashSet

答案 1 :(得分:2)

如果你没有 使用ArrayList,我建议你查看Java的Set接口。常规HashSet可能会为您提供最佳表现。如果您希望元素保持逻辑顺序,TreeSet将起作用。如果您想维护广告订单顺序,LinkedHashSet会有效,就好像它是ArrayList一样。您必须覆盖equals()才能使用任何集合,并且要使用基于哈希的集合,您还需要覆盖hashCode()