3

一連の Bean をループして、何かをチェックしてリストに追加しています。特定のアイテムを 1 回だけ追加したい

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

SetリストのFinalItemBean代わりに ofを使用することをお勧めします。多くの Bean がある場合、共通のHashSet実装ではアイテムが既に存在するかどうかを非常に高速にチェックできるため、パフォーマンスが向上します。

于 2012-04-20T18:03:21.047 に答える
3

インターフェイスリストにはcontainsというメソッドがあり、その'occurrence'がリストにある場合はtrueを返し、リストにない場合はfalseを返します。好き:

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

とても簡単。代わりにセットを使用することもできますが、リストはセットよりも柔軟性があると思います。それは、一部の開発者が信じていることです。

于 2012-04-20T18:05:54.150 に答える
1

リストの代わりにHashSetを使用します。

次のようなコードでリストを作成できます。

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

Setセットは重複を許可しないので使用しますが、とListは重複を許可します。

于 2012-04-20T18:04:44.287 に答える