我循环遍历一组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 );
}
答案 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
允许重复。