3

我正在遍历一组 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

4 回答 4

7

我建议使用SetofFinalItemBean而不是列表。如果你有很多 bean,这甚至会提高性能,因为常见的HashSet实现在检查项目是否已经存在方面非常快。

于 2012-04-20T18:03:21.047 回答
3

接口列表有一个名为 contains 的方法,如果“发生”在列表中,则返回 true,如果不在列表中,则返回 false。像:

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

挺容易。您也可以使用 Set 代替,但是,我认为列表比集合更灵活,或者这就是一些开发人员所相信的。

于 2012-04-20T18:05:54.150 回答
1

使用 HashSet 而不是 List。

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

Set s = new HashSet();
//add here
List l = new ArrayList();
l.addAll(s);
于 2012-04-20T18:03:47.920 回答
1

使用Set因为集合不允许在 as 和List允许重复的地方重复。

于 2012-04-20T18:04:44.287 回答