【问题标题】:How to build matrix with constant row and column and intersected by value in java?java - 如何在java中构建具有恒定行和列并按值相交的矩阵?
【发布时间】:2015-11-29 21:08:52
【问题描述】:

我想制作一个具有恒定行和恒定列以及值之间的矩阵。

例如:

我想建立这样的矩阵

  A B C D  
A 0 1 1 1   
B 1 0 1 1  
C 1 1 0 1  
D 1 1 1 0  

如何在java中制作这个?

public static void main(String[] args) {
    // TODO code application logic here
    String[] x = {"A", "B", "C", "D"};
    String[][] values = new String[x.length][x.length];
    ArrayList<Object[]> list = new ArrayList<Object[]>();
    list.add(x);

    for (int i = 0; i < x.length; i++) {
        for (int j = 0; j < x.length - 1; j++) {
            values[i][j + 1] = "1";
        }
    }
    list.add(values);
}

【问题讨论】:

  • 发布一些您尝试过的代码以及您可能遇到的错误/错误输出。

标签: java matrix arraylist


【解决方案1】:

如果您想要一个由字符串索引的二维数组,一种方法是使用Map&lt;String, Map&lt;String, Object&gt;&gt;

使用枚举而不是字符串可能更方便

enum Letter { A, B, C, D }

那么你可以使用EnumMap

Map<Letter, Map<Letter, String>> map = new EnumMap<>(Letter.class);
for (Letter x : Letter.values()) { 
    map.put(x, new EnumMap<>(Letter.class));
}

这将使您能够写作

map.get(Letter.C).put(Letter.B, "Foo");
String s = map.get(Letter.C).get(Letter.B);

这样的嵌套地图可能会很尴尬,所以 guava 有一个接口Table 来处理这种事情。

【讨论】:

  • EnumMap> matrix = null; EnumMap x = null; x.put(字母.B, "0");矩阵.put(字母.A, x);它给了我一个空指针异常
  • Map> map = new EnumMap(Letter.class);这里它给了我一个错误 --> 需要的参数数量错误 2
  • 我在手机上写这个,所以有很多错别字,但这基本上是有效的!我又做了一次修改
  • 这是我第一次使用地图所以我不知道如何解决错误
  • Table界面如何使用?
【解决方案2】:

使用数组和int常量,例如:

private static final int A = 0;
private static final int B = 1;
...
public void yourMethod() { 
   int[][] matrix = new int[4][4];
   matrix[A][A] = 0; // AA = 0
   matrix[B][A] = 1; // AB = 1
...

【讨论】:

  • 而不是Arraylist,但是如何在矩阵中表示A,B,C,D?
  • 您可以使用常数 A、B、C、D,因此您可以使用矩阵 [A][D] 或索引矩阵 [i][j] 来处理矩阵
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
相关资源
最近更新 更多