从列表中删除重复的bean

时间:2012-04-20 18:01:18

标签: java

我循环遍历一组bean并检查某些内容并添加到列表中。我只想添加一个特定项目

List<PartsBean> beans = hotPartsDAO.getDeletedList(user);
List<FinalItemBean> finalItemList = new ArrayList<FinalItemBean>();
for (PartsBean bean : beans)
{
    if (!bean.getFinalItem().isActive())
    {
        finalItemList.add(bean.getFinalItem());
    }
}

在列表中我得到了例如

"test"
"test"
"test"
"hello"

我只想要1“测试”

如果我要使用一个集合,那么我将如何修改它以便我可以将该集合的组件添加到下面:

以下是List<FinalItemBean> list

目前的传递方式
protected final void buildFinalItemFilterList( Action action, PartsDAO dao, List<FinalItemBean> list )

    throws SQLException
{
    List<FinalItemBean> finalItems = dao.getAllFinalItems( false );
    FinalItemBean finalItem;

    for (FinalItemBean e: list )
    {
         finalItem = dao.getFinalItemById(e.getId());
         finalItems.add(finalItem);
    }

    Collections.sort( finalItems );
    action.setRequestAttribute("finalItems", finalItems );
}

4 个答案:

答案 0 :(得分:7)

我建议使用Set FinalItemBean代替列表。如果你有很多bean,这甚至可以提高性能,因为常见的HashSet实现在检查项目是否已经存在时非常快。

答案 1 :(得分:3)

接口列表有一个名为contains的方法,如果列表中有'occurrence',则返回true,如果不在列表中则返回false。 喜欢:

if(!myList.contains(person)) myList.add(person);

非常简单。您也可以使用Set,但是,我认为列表比集合更灵活,或者这是一些开发人员所相信的。

答案 2 :(得分:1)

使用HashSet而不是List。

您可以使用以下代码创建列表:

Set s = new HashSet();
//add here
List l = new ArrayList();
l.addAll(s);

答案 3 :(得分:1)

使用Set因为集合不允许重复 并且List允许重复。