gpt4 book ai didi

java - HashMap 到数组 : throws java. lang.ArrayStoreException

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

我应该将哈希值转换为数组,但它向我抛出一个 java.lang.ArrayStoreException 。我一步一步地尝试着构建它,但它无法运行。

哈希值:

{
objectOne : {
attributeOne : 1,
attributeTwo : 2
},
objectTwo : {
attributeOne : 3,
attributeTwo : 4
}
}

进入具有结构的数组:

[
{
name : 'objectOne',
attributes : {
attributeOne : 1,
attributeTwo : 2
}
}, {
name : 'objectTwo',
attributes : {
attributeOne : 3,
attributeTwo : 4
}
}
]

我的代码抛出:

java.lang.ArrayStoreException: java.lang.String
at java.util.AbstractCollection.toArray(AbstractCollection.java:171)
at hashToArray2.main(hashToArray2.java:36)

我尝试将参数更改为:

Object[] keys = map.keySet().toArray(new Object[map.size()][]));
Object[] values = map.values().toArray(new Object[map.size()][]));

但它会产生同样的问题。

代码:

public class hashToArray2{
public static void main (String[] args) throws ClassNotFoundException{
Class.forName("hashToArray2");
System.out.println("hashToArray class successfully loaded");

//Creating object1 + input values
HashMap<String, Integer> obj1 = new HashMap<String, Integer>();
obj1.put("attributeOne", 1);
obj1.put("attributeTwo", 2);

//Creating object2 + input values
HashMap<String, Integer> obj2 = new HashMap<String, Integer>();
obj2.put("attributeOne", 3);
obj2.put("attributeTwo", 4);

//Combining obj1+2
//HashMap<String, Integer> map = new HashMap<String, Integer>();
//map.putAll(obj1);
//map.putAll(obj2);

//to array
Object[][] arr1 = new String[obj1.size()][2];
Object[][] arr2 = new String[obj2.size()][2];
//obj1
Object[] keys1 = obj1.keySet().toArray(new Object[obj1.size()][]);
Object[] values1 = obj1.values().toArray(new Object[obj1.size()][]);

for(int i = 0; i < arr1.length; i++){
arr1[i][0] = keys1[i];
arr1[i][1] = values1[i];
}

for(int j = 0; j < arr1.length; j++){
for(int k = 0; k < arr1[j].length; k++){
System.out.println(arr1[j][k]);
}
}

//obj2
Object[] keys2 = obj2.keySet().toArray(new Object[obj2.size()][]);
Object[] values2 = obj2.values().toArray(new Object[obj2.size()][]);

for(int a = 0; a < arr2.length; a++){
arr2[a][0] = keys2[a];
arr2[a][1] = values2[a];
}

for(int b = 0; b < arr2.length; b++){
for(int c = 0; c < arr2[b].length; c++){
System.out.println(arr2[b][c]);
}
}
}
}

最佳答案

异常是由这行代码引起的:

Object[] keys1 = obj1.keySet().toArray(new Object[obj1.size()][]);

那么,它在做什么:它调用 toArray(T[])Set<String>上。 toArray()接受一个数组作为参数,并将该集合的所有值(在本例中为 String 实例)存储在该数组中。但你正在通过new Object[obj1.size()][]作为参数,即 Object[] 的数组,即对象数组的数组。字符串不是 Object[] ,因此出现错误。

鉴于您的描述确实与代码不符,我真的不知道您要做什么。我所知道的是,您的代码正在请求具有属性的自定义类,而不是映射和数组。

关于java - HashMap 到数组 : throws java. lang.ArrayStoreException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637575/

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