【问题标题】:While implementing HashMap: type mismatch when trying to program to interface [duplicate]在实现HashMap时:尝试编程接口时类型不匹配[重复]
【发布时间】:2014-06-26 07:08:36
【问题描述】:

我正在尝试实现我自己的 HashMap 版本。 FDor 存储我想使用 LinkedLists 的 ArrayList 的项目,为此我采用“程序到接口”方法。所以项目类型是List <List<MyEntry<k,v>>>

但是

我想通过ArrayList< LinkedList< MyEntry< k,v>>>()实例化它

我得到编译错误的代码有什么问题

类型不匹配:无法从 ArrayList< LinkedList< MyHashMap1< k,v>.MyEntry<k,v>>> 转换为 List<List<MyHashMap1<k,v>.MyEntry<k,v>>>

我的问题是

如果我将类型更改为List< LinkedList< MyEntry< k, v>>> 它可以工作,但 List< LinkedList< MyEntry< k, v>>> 不是 %100 接口,LInkedList 不是接口

package maps;
import java.util.ArrayList;
import java.util.List;
import java.util.LinkedList;
public class MyHashMap1<k,v> {
    //Type mismatch: cannot convert from ArrayList<LinkedList<MyHashMap1<k,v>.MyEntry<k,v>>> to List<List<MyHashMap1<k,v>.MyEntry<k,v>>>
    List <List<MyEntry<k,v>>> items = new ArrayList<LinkedList<MyEntry<k,v>>>(); 
    public class MyEntry<a,b>{
        a key;
        b value;

        public MyEntry(a key,b value){
            this.key = key;
            this.value = value;
        }
    }
}

【问题讨论】:

  • 您没有导入LinkedList 类。
  • 那么你导入LinkedList了吗?
  • 这不是问题。问题是,如果我将项目类型更改为 List>> 它会起作用。但是 List>> 是一个接口吗?
  • 伙计们,我更新了我的问题(添加了 import java.util.LinkedList;)对不起

标签: java arraylist


【解决方案1】:

你可以试试这个

List<LinkedList<MyEntry<k,v>>> items = new ArrayList<LinkedList<MyEntry<k,v>>>();

如果ArrayList 可以接受任何类型的List,请尝试这个

List<List<MyEntry<k,v>>> items = new ArrayList<List<MyEntry<k,v>>>(); 

始终编码到接口而不是具体类。

【讨论】:

  • 关于第一个解决方案: List>> 是一个接口吗?
  • List 是一个接口。
  • 我的意思是整个东西 (List>> ) 是一个接口?
  • List&lt;List&lt;MyEntry&lt;k, v&gt;&gt;&gt; 如果MyEntry 也是一个接口,则 100% 是一个接口。
  • 类型信息在运行时丢失,因此您如何定义类型信息没有任何意义。这里Listinterface,不管它是如何参数化的。
猜你喜欢
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
相关资源
最近更新 更多