2012-04-20 204 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允許重複。