2014-10-22 59 views
-3

我有一个额外的普通需求,有一个Java对象数组列表(或列表初始化为一个ArrayList),它将不断更新,并应该只包含对象的最新5个项目按照它们被添加的降序排序。Java ArrayList集合保存最新的5个增加

这怎么可能完成?我需要在Java SE 7中提出一个解决方案,最好不使用第三方库。

注意对于那些将此问题标记为重复的人,您似乎无法理解在此情况下使用ArrayList的要求,并且Queues和ArrayList是不同的对象类型以及Java和C#是不同的语言。你认为Stackoverflow的内部搜索引擎不如您在查找重复问题时那么好?

将问题标为“重复”时,请确保您链接的是真实副本。

+1

你可以使用链表来代替ArrayList中实现O(1)添加/移除元素的时间复杂度 – user3437460 2014-10-22 11:03:46

+0

每次如果大小大于5,则添加,删除第一个元素。 – sp00m 2014-10-22 11:04:00

+1

你对此有何想法?困难在哪里? – 2014-10-22 11:04:07

回答

0

不知道的降序排列,但是这说明固定大小

的一种方式
class BoundedArrayList<E> extends ArrayList<E> { 
    private int fixedCapacity; 

    public BoundedArrayList(int fixedCapacity) { 
     super(fixedCapacity); 
     this.fixedCapacity = fixedCapacity; 
    } 

    @Override 
    public boolean add(E e) { 
     // is it about to cross limit ? removing it in advance 
     if(this.size() > fixedCapacity - 1) { 
      E element = this.remove(fixedCapacity - 1); 
      System.out.println("Removed due to overflow : " + element); 
     } 
     this.add(0, e); 
     return true; 
    } 

    public static void main(String[] args) { 
     BoundedArrayList<Integer> list = new BoundedArrayList<Integer>(5); 
     for(int i =0 ; i < 10; i++) { 
      list.add(i); 
      System.out.println(list); 
     } 
    } 
}