gpt4 book ai didi

java - 创建一个存储通用类型对象的 ArrayList 数组

转载 作者:行者123 更新时间:2023-11-30 08:30:18 25 4
gpt4 key购买 nike

我必须创建一个 ArrayList 数组,它存储一个通用类型的对象。

ArrayList<Entry>[] bucket;

当我将其初始化为

bucket=(ArrayList<Entry>[])new Object[m];

我在运行时得到 java.lang.ClassCastException

Entry 类使用泛型。下面是代码:

class Entry<K,V>{
K key;
V value;

public Entry(K key,V value){
this.key=key;
this.value=value;
}

在浏览了几篇关于为什么对象数组不能转换为泛型类型的 ArrayList 的帖子后,我明白了我的问题。但是我无法解决这个问题来解决我的特殊情况。

涉及的一些解决方案:

将其“ArrayList 的数组”“ArrayList 的 ArrayList”,
但我不能这样做。

完整代码:

import java.util.ArrayList;
class MyHashMap<K,V> {

int m;
int loadFactor;
int n;

ArrayList<Entry>[] bucket;

public MyHashMap(){
this(10,2);
}
public MyHashMap(int m){
this(m,2);
}
public MyHashMap(int m,int loadFactor){
this.m=m;
this.loadFactor=loadFactor;
n=0;

bucket=(ArrayList<Entry>[])new Object[m];

}

class Entry{
K key;
V value;

public Entry(K key,V value){
this.key=key;
this.value=value;
}

public int hashCode(){
return 0;
}
}


public void put(K key, V value){
Entry entry=new Entry(key,value);
int hash=entry.hashCode();
int index=hash%m;
bucket[index].add(entry);
}

public static void main(String[] args) {
MyHashMap hashMap=new MyHashMap();

hashMap.put("faisal",2);
}
}

最佳答案

您不能创建通用类型的数组。改用这个:

ArrayList<Entry>[] bucket = new ArrayList[m];

虽然它显示未经检查的警告,但您可以使用 @SuppressWarnings("unchecked") 来抑制它,如下所示:

@SuppressWarnings("unchecked")
ArrayList<Entry>[] bucket = new ArrayList[m];

关于java - 创建一个存储通用类型对象的 ArrayList 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41327762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com