我有以下课程;
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 :(得分: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;
}