gpt4 book ai didi

java - 尝试存储链表数组时出现 ArrayStoreException

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:35 28 4
gpt4 key购买 nike

我正在尝试创建一个链表数组来处理散列值冲突。我有一个对象数组,我试图存储 linkedList 但它似乎不起作用。我做错了什么,或者我应该采取更有效的方法。

这是我在运行代码时遇到的错误。

Exception in thread "main" java.lang.ArrayStoreException: linkedList
at p7b.Insert(p7b.java:57)
at p7b.main(p7b.java:31)

这是我的方法

    public static void Insert(int hashVal, String key,int[] arrayNums, Object[] arrayString){


Node newNode = new Node(key,null);
linkedList list = new linkedList();

if (arrayString[hashVal] == null){

arrayString[hashVal] = list;
}

这是 linkedList 代码:

    public class linkedList{

private Node head;
private int size;


public linkedList(){
size = 0;
head = null;
}//end default constructor

public boolean isEmpty(){
return size == 0;
}//end isEmpty

public int size(){
return size;
}//end size

protected Node find(int index){
Node curr = head;

for(int skip = 0; skip < index; skip++){
curr = curr.getNext();
}//end for

return curr;

}//end find

public Object get(int index){

if (index >=0 && index < size) {

// get reference to node, then data in node
Node curr = find(index);
Object dataItem = curr.item();
System.out.println(dataItem);
return dataItem;

}
else
return "error";
}//end get

public void add(int index, String item){

if(index>= 0 && index < size+1){
if(index == 0) {
//insert the new node containing item at
//beginning of list
Node newNode = new Node(item,head);
head = newNode;
head.setNext(head);//--------------------


}

else {
Node prev = find(index-1);

//insert the new node containing item after
//the node that prev references
Node newNode = new Node(item,head.getNext()); //changed prev to head
head.setNext(newNode); //prev.next = newNode --//changed prev to ead
head = newNode;
}//end if
}
sizeplus();

/*if(index == 16){//fffff
for(int i = 0; i < 50; i++){
System.out.println(head.item());-------------EXR
head = head.getNext();
System.out.println("----------");
}//ifffffff

}
*/
}//end add

public int sizeplus(){
size+=1;
return size;
}
public void remove(int index){
int num = index;
while(size>0){
//System.out.println("strt");
if(index>= 0 /*&& index < size*/){
if(index == 0) {
//delete the first node from the list
System.out.println("REMOVED :"+head.item());//----------------EXR
head = head.getNext();
}
else {
Node prev = find(index-1);

// delete the node after the node that prev
//references, save regerence to node
Node curr = prev.getNext();

System.out.println(curr.item());
if(size > 1){

}
else{
System.out.print("is the last one left");
}
prev.setNext(curr.getNext());
curr = prev.getNext();

index+=num-1;

}//end if
size--;
//System.out.println(size+" <-size || index-> " +index);

}//end if

}

}//end remove

public Node getH(){
return head;
}

}//end class

另外:我如何从链接列表更改为下一个这是我尝试过的。

    linkedList list = new linkedList(); 
list = arrayString[i];

p7b.java:44: error: incompatible types
list = arrayString[i];
^
required: linkedList
found: Object
1 error

最佳答案

从您的主要方法:

Object[] arrayString = new String[40];
...
Insert(hashVal,key,arrayNums,arrayString);

您正在将一个字符串数组传递给您的方法。因此,您不能将 linkedList 实例放入此数组中。

如果您希望此数组包含 linkedList 实例,请将代码更改为:

Object[] arrayString = new linkedList[40];
...
Insert(hashVal,key,arrayNums,arrayString);

甚至更好:

linkedList[] arrayString = new linkedList[40];
...
Insert(hashVal,key,arrayNums,arrayString);

并更改 Insert 的签名以接受 linkedList[] 而不是 Object[]

关于java - 尝试存储链表数组时出现 ArrayStoreException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904280/

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