實現一個固定長度的集合隊列

來源:互聯網
上載者:User

實現一個固定長度的集合隊列

在開發中,有時候我們會遇到這樣的需求:

對一個集合操作,提前為集合指定最大大小,在我們不斷向集合中添加資料的時候,當資料內容超過最大值的時候,自動將最先入隊的元素移除隊列。

實現方法很簡單,代碼如下

package com.test.limitqueue;import java.util.Collection;import java.util.Iterator;import java.util.LinkedList;import java.util.Queue;/** * 實現一個固定長度的集合隊列 * * @author SHANHY([email protected]) * @date   2015年11月9日 * @param  */public class LimitQueue implements Queue {/** * 隊列長度,執行個體化類的時候指定  */    private int limit;            Queue queue = new LinkedList();            public LimitQueue(int limit){          this.limit = limit;      }            /**     * 入隊     */    @Override      public boolean offer(E e){          if(queue.size() >= limit){              //如果超出長度,入隊時,先出隊              queue.poll();          }        return queue.offer(e);      }            /**     * 出隊      */    @Override      public E poll() {          return queue.poll();      }            /**     * 擷取隊列      *      * @return     * @author SHANHY     * @date   2015年11月9日     */    public Queue getQueue(){          return queue;      }            /**     * 擷取限制大小     *      * @return     * @author SHANHY     * @date   2015年11月9日     */    public int getLimit(){          return limit;      }        @Override      public boolean add(E e) {          return queue.add(e);      }        @Override      public E element() {          return queue.element();      }        @Override      public E peek() {          return queue.peek();      }        @Override      public boolean isEmpty() {          return queue.size() == 0 ? true : false;      }        @Override      public int size() {          return queue.size();      }        @Override      public E remove() {          return queue.remove();      }        @Override      public boolean addAll(Collection  c) {          return queue.addAll(c);      }        @Override      public void clear() {          queue.clear();      }        @Override      public boolean contains(Object o) {          return queue.contains(o);      }        @Override      public boolean containsAll(Collection  c) {          return queue.containsAll(c);      }        @Override      public Iterator iterator() {          return queue.iterator();      }        @Override      public boolean remove(Object o) {          return queue.remove(o);      }        @Override      public boolean removeAll(Collection  c) {          return queue.removeAll(c);      }        @Override      public boolean retainAll(Collection  c) {          return queue.retainAll(c);      }        @Override      public Object[] toArray() {          return queue.toArray();      }        @Override      public  T[] toArray(T[] a) {          return queue.toArray(a);      }  }

 

 

package com.test.limitqueue;/** * 測試 * * @author SHANHY([email protected]) * @date   2015年11月9日 */public class TestQueue {public static void main(String[] args) {LimitQueue list = new LimitQueue(4);list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());list.offer(SHANHY);System.out.println(list.size());}}


 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.