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

标签 java

我正在尝试创建一个链表数组来处理散列值冲突。我有一个对象数组,我试图存储 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/

相关文章:

java - 没有选择数据库 GAE

java - 如何获取所有 Android 联系人的 URI 数组

java - 不将数组从 json 解析为 android java

java - 用用户命名的java在mysql中创建一个表?

java - java 中的制图和路线图

java - 查找文本文件的路径

java - 无法读取 *.ttf 文件

java - 如何使用jsoup取消注释html标签

java - 如何使用反射来执行通用构造函数

java - 连接被对等方重置 : socket write error IBM Watson visual-recognition