Java 如何使数组元素成为ArrayList?
我有一个Java 如何使数组元素成为ArrayList?,java,Java,我有一个HashMap类,它将Object[]类型的变量“table”实例化为Object[cap],其中cap在测试中等于10。我在HashMap类中有以下put方法: public void put(K key, V value){ HashEntry<K, V> newEntry = new HashEntry<K, V>(key, value); location = Math.abs(key.hashCode()) % capacity;
HashMap
类,它将Object[]
类型的变量“table”实例化为Object[cap]
,其中cap在测试中等于10。我在HashMap
类中有以下put方法:
public void put(K key, V value){
HashEntry<K, V> newEntry = new HashEntry<K, V>(key, value);
location = Math.abs(key.hashCode()) % capacity;
//System.out.println(location);
if(table[location] == null){
table[location] = new ArrayList<HashEntry<K, V>>();
table[location] = newEntry;
numItems++;
}
else {
table[location] = newEntry;
}
}
public void put(K键,V值){
HashEntry newEntry=新的HashEntry(键,值);
location=Math.abs(key.hashCode())%容量;
//系统输出打印项次(位置);
if(表[位置]==null){
table[location]=新的ArrayList();
表[位置]=新条目;
numItems++;
}
否则{
表[位置]=新条目;
}
}
为了使
ArrayList
工作,我应该使用table[location].add(newEntry)
,而不是table[location]=newEntry
。但是,如果我使用前者,我会得到消息“类型对象的方法add(HashEntry)
未定义”。当我使用后者时,我当然无法获得正确的输出,因为没有一个“bucket
”可以从中检索信息。与二维数组相比,我更喜欢使用ArrayList
,因为我根本没有2D数组!感谢您的帮助,因为我一整天都在做各种各样的尝试 将数组元素直接分配给ArrayList的一种方法是:
String array[]={"Abc","Def"};
List<String> list=Arrays.asList(array);
字符串数组[]={“Abc”,“Def”};
列表=数组。asList(数组);
第二种方法是通过for循环遍历数组元素,然后将它们指定给arrayList,如下所示:
for(int i=0;i<array.length'i++)
{
list.add(arr[i]);
}
for(int i=0;iif(表[位置]==null){
table[location]=新的ArrayList();
表[位置]=新条目;
numItems++;
}
否则{
表[位置]=新条目;
}
这是错误的,应该是:
if(table[location] == null){
table[location] = new ArrayList<HashEntry<K, V>>();
}
table[location].add(newEntry);
if(表[位置]==null){
table[location]=新的ArrayList();
}
表[位置]。添加(新条目);
该表是对ArrayList
的引用数组一旦找到所需的bucket(并在需要时初始化),您就要将新条目添加到ArrayList
您在哪里/如何定义table
?是否尝试将表声明为列表数组?如“List[]table;”Object[]table;然后在构造函数中,table=new Object[cap];List[]table会导致其他问题,但解决了.add问题。我当然明白你的意思,我已经更改了代码。谢谢你!但是,我仍然会遇到更困难的错误消息,“type对象的方法add(HashEntry)
未定义。”
if(table[location] == null){
table[location] = new ArrayList<HashEntry<K, V>>();
}
table[location].add(newEntry);