gpt4 book ai didi

java - 通用稀疏矩阵加法

转载 作者:行者123 更新时间:2023-12-01 05:43:38 25 4
gpt4 key购买 nike

我有一个任务,我应该完成通用稀疏矩阵的实现。我被困在加法部分。矩阵只支持数字,所以我让它扩展 Number 希望我可以添加数字,那是错误的。数据结构不是数组,它本质上是 2 个链表。 (一个用于行,一个用于列)这是有问题的代码:

public MatrixSparse<? extends Number> addition(MatrixSparse<? extends Number> A, MatrixSparse<? extends Number> B, MatrixSparse<? extends Number> result) {
for (int i = 0; i < r.length; i++) {
for(int j = 0; j < c.length; j++) {
// set (i, j) to the sum of A(i,j) and B(i,j) is giving me an error
// "+" is undefined for type capture#2-? etc.
result.set(i, j, (A.get(i, j) + B.get(i, j)));
}
}
return result;
}

以及类头+类变量:

class MatrixSparse<T extends Number> { 
final Links r[];
final Links c[];
final int rows, columns;
final T zero;

关于如何实现此添加方法有什么建议吗?

最佳答案

将其视为心理/学校练习:您不能将两个泛型与“+”运算符一起添加 - 运算符不是“通用的”,并且您不能在 Java 中重载它们(与 C++ 有很大不同),而自动装箱则可以没有帮助。我认为你唯一能做的就是在矩阵中编写一个通用的 T add(T paramLeft,T paramRight) 并执行类似的操作:

if (paramLeft instanceof Integer) {
return new Integer(((Integer)paramLeft).intValue()+ ((Integer)paramRight).intValue());
} elseif (paramLeft instanceof Double) {
....
}

关于java - 通用稀疏矩阵加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481083/

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