获取Java对象中项目子集的最有效方法是什么?

时间:2016-12-25 06:32:41

标签: java android class object

我有以下课程;

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。我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

如果您需要List中的前三名,则可以迭代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,您还可以使用ArrayList的{​​{3}}方法。请参阅下面的代码。

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