【问题标题】:how change type of ArrayList popped from stack from object to linkedlist?如何更改从堆栈中弹出的 ArrayList 类型从对象到链表?
【发布时间】:2019-10-19 05:33:06
【问题描述】:

我正在创建 ArrayList 并使用 push() 将它们存储在堆栈中。 但是,当我弹出它时,它给了我一个Object cannot be converted to List<Integer> 的错误。这是我的代码:

 List<Integer> myl=new ArrayList<Integer>();
 myl=myStack.pop();

【问题讨论】:

  • 我们可以看看你的堆栈定义吗?

标签: java linked-list stack


【解决方案1】:

两件事:

List<Integer> myl = new ArrayList<Integer>(); 

可以简化为:

List<Integer> items = new ArrayList<>(); 

菱形运算符允许避免重复类型信息。我还将它更改为使用 有意义的 名称。不要使用没有意义的缩写。使用读者容易理解的内容。

然后,您只需要一个演员表:

items = (List<Integer>) myStack.pop();

当然,这要求您真的在您的堆栈顶部有一个列表!

理想情况下,您的堆栈本身可以支持泛型,因此您可以这样说:

MyStack<List<Integer>> myStack = new MyStack<>();

这样你以后就可以去

items = myStack.pop();

没有演员表!

你看,当你的方法签名说this method returns Object,那么编译器怎么知道在这种情况下,因为你之前添加了一个列表,所以值有一个更具体的类型?!

【讨论】:

  • 非常感谢您的澄清,我能够继续,但是我还有一个问题,如果没有像这里这样的双重列表右侧的内部类型信息,我将无法运行。 List> result=new ArrayList>();
猜你喜欢
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多