关于java:实现HashMap时:在尝试编程接口时类型不匹配

While implementing HashMap: type mismatch when trying to program to interface

本问题已经有最佳答案,请猛点这里访问。

我正在尝试实现我自己版本的hashmap。为了存储我想使用的项,我采用了"程序到接口"的方法。所以项目类型是List >>

但是

我想用ArrayList< LinkedList< MyEntry< k,v>>>()举例说明

我的代码有什么问题导致编译错误

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

我的问题是

如果我把类型改成List< LinkedList< MyEntry< k, v>>>。它可以工作,但List< LinkedList< MyEntry< k, v>>>不是%100接口,linkedList不是接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 key;
        b value;

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


你能试试这个吗

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

或者,如果ArrayList可以接受任何类型的List就试试这个。

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

总是编码到接口,而不是具体的类。