2016-12-25 7 views
0

私は以下のクラスを持っています。Javaオブジェクト内のアイテムのサブセットを取得する最も効率的な方法は何ですか?

public class RSSFeed implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private int _itemcount = 0; 
    private List<RSSItem> _itemlist; 

    RSSFeed() { 
     _itemlist = new Vector<RSSItem>(0); 
    } 

    void addItem(RSSItem item) { 
     _itemlist.add(item); 
     _itemcount++; 
    } 
    public void removeItem(RSSItem item) { 
     _itemlist.remove(item); 
     _itemcount--; 
    } 
    public void shuffleList() { 
     Collections.shuffle(_itemlist); 
    } 
    public RSSItem getItem(int location) { 
     return _itemlist.get(location); 
    } 

    public int getItemCount() { 
     return _itemcount; 
    } 
    public void reverseList(){Collections.reverse(_itemlist);}; 

} 

このクラスのオブジェクトは、次のように作成できます。

public static RSSFeed feed; 

ここで、別のオブジェクトをpublic static RSSFeed **feed1**としたいと思います。 feed1に大きなオブジェクトfeedのアイテム3〜20が含まれています。これはどうすればいいですか?

おかげ

+0

実際に効率が心配な場合は、VectorではなくArrayListを使用してください。 – Mordechai

+0

どうしたらいいですか? – Zac

答えて

0

あなたはListからトップ3が必要な場合は、List_itemlistを反復し、一時Listを作成し、一時リストを返すことができます。

public List<RSSItem> getTopThree() { 
    if(_itemlist != null){ 
     List<RSSItem> temp = new ArrayList<RSSItem>(); 
     for (RSSItem item : _itemlist) { 
      temp.add(item); 
      if(temp.size() == 3) 
       break; 
     } 
     return temp; 
    } 
    return null; 
} 

最適化は、作成前とクラスRSSFeedのフィールドなどのアイテムを格納するだろう。

@MouseEvents sugestionによると、ArrayListsublistメソッドを使用することもできます。以下のコードを参照してください。

public List<RSSItem> getTopThree() { 
    if (_itemlist != null) { 
     int end = _itemlist.size() < 3 ? _itemlist.size() : 3; 
     return _itemlist.subList(0, end); 
    } 
    return null; 
} 
+0

私はむしろsublist()を使用したいと思います。 – Mordechai

+0

@MouseEvent素晴らしい提案!実際にこのような方法を知らなかった。本当にありがとう :) –

関連する問題