是否有一种方法可以在整数对象之间使用Java中的HashMap值执行加法/减法? publicstatichashmap makeHashMap(){ HashMap table=新的HashMap(); 表.付诸表决(“C”,1); 表1.put(“V”,2); 表.付诸表决(“D”,3); 表1.put(“W”,4); 表.付诸表决(“E”,5); 表.付诸表决(“F”,6); 表1.put(“X”,7); 表.put(“G”,8); 表1.put(“Y”,9); 表.付诸表决(“A”,10); 表.put(“Z”,11); 表.付诸表决(“B”,12); //系统输出打印(表格); 返回表; } 公共静态ArrayList MakeArayList(HashMap表){ Object[]keys=table.keySet().toArray(); ArrayList randomlyGeneratedNotes=新建ArrayList(); 对于(int i=0;i
如何在HashMap值之间执行加法/减法?还是我使用了不合适的数据结构?我尝试了我的是否有一种方法可以在整数对象之间使用Java中的HashMap值执行加法/减法? publicstatichashmap makeHashMap(){ HashMap table=新的HashMap(); 表.付诸表决(“C”,1); 表1.put(“V”,2); 表.付诸表决(“D”,3); 表1.put(“W”,4); 表.付诸表决(“E”,5); 表.付诸表决(“F”,6); 表1.put(“X”,7); 表.put(“G”,8); 表1.put(“Y”,9); 表.付诸表决(“A”,10); 表.put(“Z”,11); 表.付诸表决(“B”,12); //系统输出打印(表格); 返回表; } 公共静态ArrayList MakeArayList(HashMap表){ Object[]keys=table.keySet().toArray(); ArrayList randomlyGeneratedNotes=新建ArrayList(); 对于(int i=0;i,java,Java,如何在HashMap值之间执行加法/减法?还是我使用了不合适的数据结构?我尝试了我的pitchMovement方法,但是int first=table.get(key)行给出了不兼容类型的错误: 对象无法转换为int 不确定这是一个简单的错误还是更复杂的错误 试试看 整数优先=table.get(键) 由于表是字符串和整数的映射,所以可以将值设置为整数。 然后可以将整数变量转换为int。试试看 整数优先=table.get(键) 由于表是字符串和整数的映射,所以可以将值设置为整数。 然后,您可以
pitchMovement
方法,但是int first=table.get(key)代码>行给出了不兼容类型的错误:
对象无法转换为int
不确定这是一个简单的错误还是更复杂的错误 试试看
整数优先=table.get(键)
由于表是字符串和整数的映射,所以可以将值设置为整数。
然后可以将整数变量转换为int。试试看
整数优先=table.get(键)
由于表是字符串和整数的映射,所以可以将值设置为整数。
然后,您可以将整数变量转换为int。您需要使用通用参数更新方法签名:
public static HashMap makeHashMap() {
HashMap<String, Integer> table = new HashMap<String, Integer>();
table.put("C", 1);
table.put("V", 2);
table.put("D", 3);
table.put("W", 4);
table.put("E", 5);
table.put("F", 6);
table.put("X", 7);
table.put("G", 8);
table.put("Y", 9);
table.put("A", 10);
table.put("Z", 11);
table.put("B", 12);
// System.out.print(table);
return table;
}
public static ArrayList<Object> makeArrayList(HashMap<String, Integer> table) {
Object[] keys = table.keySet().toArray();
ArrayList<Object> randomlyGeneratedNotes = new ArrayList<Object>();
for (int i = 0; i < 83; i++) {
Object key = keys[new Random().nextInt(keys.length)];
// System.out.println(key + " " + table.get(key));
randomlyGeneratedNotes.add(key);
}
System.out.println(randomlyGeneratedNotes);
return randomlyGeneratedNotes;
}
public static void pitchMovement(ArrayList<Object> randomlyGeneratedNotes, HashMap table) {
Iterator<String> keySetIterator = table.keySet().iterator();
String key = keySetIterator.next();
int first = table.get(key);
for (Object o : randomlyGeneratedNotes) {
//you want to grab the values of 2 neighboring keys
if (table.containsKey(o)) {
// System.out.println("true");
Object firstNote= table.get(key);
System.out.println(firstNote);
}
}
}
}
publicstaticvoidpitchmovement(arraylistrandolygeneratednotes,HashMap表)
您需要使用通用参数更新方法签名:
public static HashMap makeHashMap() {
HashMap<String, Integer> table = new HashMap<String, Integer>();
table.put("C", 1);
table.put("V", 2);
table.put("D", 3);
table.put("W", 4);
table.put("E", 5);
table.put("F", 6);
table.put("X", 7);
table.put("G", 8);
table.put("Y", 9);
table.put("A", 10);
table.put("Z", 11);
table.put("B", 12);
// System.out.print(table);
return table;
}
public static ArrayList<Object> makeArrayList(HashMap<String, Integer> table) {
Object[] keys = table.keySet().toArray();
ArrayList<Object> randomlyGeneratedNotes = new ArrayList<Object>();
for (int i = 0; i < 83; i++) {
Object key = keys[new Random().nextInt(keys.length)];
// System.out.println(key + " " + table.get(key));
randomlyGeneratedNotes.add(key);
}
System.out.println(randomlyGeneratedNotes);
return randomlyGeneratedNotes;
}
public static void pitchMovement(ArrayList<Object> randomlyGeneratedNotes, HashMap table) {
Iterator<String> keySetIterator = table.keySet().iterator();
String key = keySetIterator.next();
int first = table.get(key);
for (Object o : randomlyGeneratedNotes) {
//you want to grab the values of 2 neighboring keys
if (table.containsKey(o)) {
// System.out.println("true");
Object firstNote= table.get(key);
System.out.println(firstNote);
}
}
}
}
publicstaticvoidpitchmovement(arraylistrandolygeneratednotes,HashMap表)
我想鼓励您在理解泛型和接口方面投入一些学习努力。Java在原语和值类型(如int
和Integer
)之间的转换将非常友好,但在处理Object
类型的对象时,它会装聋作哑。您在多个地方遇到的问题是,您不必要地让强类型值降级为typeObject
我建议进行以下修改:
将public static HashMap makeHashMap()
更改为public static HashMap
。否则,您将返回您不想要的等价的HashMap
在publicstaticarraylistmakearraylist(HashMap表)
中,您从HashMap提取字符串
类型键,然后在构建数组时将它们转换为type对象
。不要更改它们的类型--将它们保留为字符串。转换为对象
值数组的“toArray()”可能会抛出您。可以使用此技术保留类型:
public static void pitchMovement(ArrayList<Object> randomlyGeneratedNotes, HashMap<String, Integer> table)
这样,您可以轻松地更改makeArrayList
的签名,以返回类型为String
的ArrayList:
String[] keys=new String[table.size()];
keys=table.keySet().toArray(keys);
总之,数学运算将按预期工作,而无需在原语及其等效值类型之间进行强制转换和转换,无论存储在何处,但是,无论在何处使用这些类型,您都必须努力保持它们的完整性。我鼓励您在理解泛型和接口方面投入一些学习努力。Java在原语和值类型(如int
和Integer
)之间的转换将非常友好,但在处理Object
类型的对象时,它会装聋作哑。您在多个地方遇到的问题是,您不必要地让强类型值降级为typeObject
我建议进行以下修改:
将public static HashMap makeHashMap()
更改为public static HashMap
。否则,您将返回您不想要的等价的HashMap
在publicstaticarraylistmakearraylist(HashMap表)
中,您从HashMap提取字符串
类型键,然后在构建数组时将它们转换为type对象
。不要更改它们的类型--将它们保留为字符串。转换为对象
值数组的“toArray()”可能会抛出您。可以使用此技术保留类型:
public static void pitchMovement(ArrayList<Object> randomlyGeneratedNotes, HashMap<String, Integer> table)
这样,您可以轻松地更改makeArrayList
的签名,以返回类型为String
的ArrayList:
String[] keys=new String[table.size()];
keys=table.keySet().toArray(keys);
总之,数学运算将按预期工作,而无需在原语及其等效值类型之间进行强制转换和转换,无论存储在何处,但是,无论在何处使用这些类型,您都必须努力将它们保留下来。您实际上是在HashMap中存储整数对象,而不是int。您只能在HashMap中存储对象。您可以使用intValue()函数将其强制转换或转换为int。不要返回原始的HashMap
!将HashMap makeHashMap()
更改为HashMap makeHashMap()