gpt4 book ai didi

java - 使用 Java 中的基本类型创建具有内部矩阵表示的 Matrix 泛型类

转载 作者:行者123 更新时间:2023-12-02 01:59:06 25 4
gpt4 key购买 nike

我有一个 Matrix 类,旨在封装原始数组数组。我需要使用通用版本而不在内部使用对象来解决内存分配问题。在Java中有什么办法可以做到这一点吗?我可以制作一系列 if 语句来检查类型,但可能有更好的方法来做到这一点。

最佳答案

您始终可以将数组包装在实现 List<List<Integer>> 的对象中然后将其视为矩阵。

private static class Matrix extends AbstractList<List<Integer>> implements List<List<Integer>> {
final int[][] data;

private static class Row extends AbstractList<Integer> implements List<Integer> {
final int[] row;

public Row(int[] row) {
this.row = row;
}

@Override
public Integer get(int index) {
return row[index];
}

@Override
public int size() {
return row.length;
}
}

public Matrix(int[][] data) {
this.data = data;
}

@Override
public List<Integer> get(int index) {
return new Row(data[index]);
}

@Override
public int size() {
return data.length;
}
}

public List<List<Integer>> asMatrix(int[][] data) {
return new Matrix(data);
}

private void test() {
int[][] test = new int[][] {
{1,2,3},
{4,5,6},
{7,8,9}
};
List<List<Integer>> matrix = asMatrix(test);
System.out.println(matrix);
}

此方法可以扩展为允许仅通过实现 set 写回内部数组。在内Row类(class)。扩展Matrix允许 get(row,col)方法将是微不足道的。

您需要为需要处理的每个原语编写其中一个。

关于java - 使用 Java 中的基本类型创建具有内部矩阵表示的 Matrix 泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896870/

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