2012-04-20 203 views
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); 
} 
+7

使用'Set'而不是'List',完成了工作:) – biziclop 2012-04-20 18:02:57

+0

可能的重复[从列表中删除重复项](http://stackoverflow.com/questions/2849450/remove-duplicates-from-a -list) – 2012-04-20 18:10:14

回答

3

接口列表有一个名为contains的方法,如果列表中出现'occurrence',并且列表中不存在false,则返回true。 赞:

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

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

+0

hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm这看起来好像我可以保留我的清单 – 2012-04-20 18:07:26

+0

在将其添加到列表中或作为其他研究员使用集合之前,将其用作条件。 – engma 2012-04-20 18:07:43

+0

我即将尝试你所拥有的......这种方式我想要在任何其他地方修改任何代码.....设置看起来很直接 – 2012-04-20 18:08:56

7

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

+0

+1:设置忽略重复。 – 2012-04-20 18:03:50

+0

听起来不错........ – 2012-04-20 18:11:36

+0

@Doc:使用'Set'是个好主意。请注意,您还必须在'EndItemBean'中重写'equals()'和'hashCode()'方法,并且它是_help_'Set'的衍生物标识重复项。 – Gowtham 2012-04-20 18:14:13

1

使用HashSet而不是List。

你可以这样创建代码列表:

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

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