2016-12-25 3 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 содержит пункты 3-20 большого объекта feed. Как мне это сделать?

Благодаря

+0

FYI Если вы действительно обеспокоены эффективностью, используйте ArrayList вместо Vector. – Mordechai

+0

Хорошо, как это сделать? – Zac

ответ

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 предложение приемлемо, вы можете также использовать sublist метод ArrayList. См. Код ниже.

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 Отличное предложение! На самом деле не знал такого метода. Огромное спасибо :) –

Смежные вопросы