首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确扩展ArrayDeque

正确扩展ArrayDeque
EN

Stack Overflow用户
提问于 2017-12-16 04:03:04
回答 2查看 222关注 0票数 0

我在扩展ArrayDeque时遇到问题。我的问题可以提炼出来(mcve?)具体到以下几点:

我的队列将只接受键-值对对象。

代码语言:javascript
复制
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayDeque;

public class TicketsQueue<E> extends ArrayDeque<E> {

    transient ArrayDeque<SimpleEntry<String, String>> tickets = new ArrayDeque<SimpleEntry<String, String>>();

    public boolean offer(String category, String ticketId) {
        return tickets.offer(new SimpleEntry<String, String>(category, ticketId));
    }
}

我也有一个自定义的poll()方法,但我不认为这与我的问题有关。ArrayDeque打算按原样使用的大多数其他东西。

然后,我尝试这样使用我的TicketsQueue

代码语言:javascript
复制
public class TicketsQueueTest {

    @Test
    public void testTixQueue() {
        TicketsQueue<SimpleEntry<String, String>> tixQueue = new TicketsQueue<SimpleEntry<String, String>>();
        tixQueue.offer("foo", "bar");
        Assert.assertFalse("It's empty!", tixQueue.isEmpty());
    }
}

此操作失败。我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-16 04:56:50

在读完关于联想的文章后,感谢Steephen,我想出了以下解决办法:

代码语言:javascript
复制
public class TicketsQueue<E> extends ArrayDeque<E> {

    public boolean offer(String category, String ticketId) {
        return offer((E) new SimpleEntry<String, String>(category, ticketId));
    }
}

这让我的TicketsQueueTest通过了。

票数 0
EN

Stack Overflow用户

发布于 2017-12-16 04:40:36

我已经最小化了实现,如下所示。我希望这能解决你的问题。

代码语言:javascript
复制
public class TicketsQueue{

       transient ArrayDeque<SimpleEntry<String, String>> tickets = new ArrayDeque<SimpleEntry<String, String>>();

       public boolean offer(String category, String ticketId) {
            return tickets.offer(new SimpleEntry<String, String>(category, ticketId));
        }   

        public static void main(String args[]) {                
            TicketsQueue tixQueue = new TicketsQueue();
            tixQueue.offer("foo", "bar");
            assert(tixQueue.tickets.isEmpty());         
        }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47839150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档