显示2维对象数组的字符串值

时间:2016-08-17 09:54:46

标签: java arrays multidimensional-array jtable

我试图在迭代JTable的行和列之后显示数组的内容。我试过Arrays.toString(myTwoDimensionalArrayVariable)但它不会显示字符串值。

我的目标是在用户尝试从来源 {{1}添加行值时,检查目标 JTable每行每列的重复项这就是我想显示数组内容的原因。

列上的值是JTabledoubleString的组合。

int

我只得到这个输出:

int myRowCount = aJTableParameter.getRowCount();
int myColumnCount = aJTableParameter.getColumnCount();
Object[][] myRowValues = new Object[myRowCount][myColumnCount];


for (int j = 0; j < myRowCount; j++) {
    for(int i = 0; i< myColumnCount; i++){
        myRowValues[j][i] = aDestinationTable.getValueAt(j, i);
     }
}

System.out.println(Arrays.toString(myRowValues));

if (Arrays.asList(myRowValues).contains(column1Value)
                && Arrays.asList(myRowValues).contains(column2Value)
                && Arrays.asList(myRowValues).contains(column3Value)
                && Arrays.asList(myRowValues).contains(column4Value)) {
            JOptionPane.showMessageDialog(null, "Duplicate, try again.");
 }else{
      //do something else
}

除了使用2维数组之外还有其他选择吗?

我很感激任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

IFF您的JTable单元格仅包含字符串,您可以将数组定义为String[][]而不是Object[][],并使用aDestinationTable.getValueAt(j, i).toString()将其填充为JTable内容。

编辑:由于情况并非如此(根据您的评论),使用List可能更好,例如:

    List<List<Object>> objectList = new ArrayList<>();
    for (int j = 0; j < 2; j++) {
        objectList.add(j, new ArrayList<>());
        for (int i = 0; i < 2; i++) {
            if (i==0) objectList.get(j).add("string" + j + i);
            if (i==1) objectList.get(j).add((double) 37.8346 * j * i);
        }
    }

    System.out.println("OBJECT LIST: "+objectList);

输出:

OBJECT LIST: [[string00, 0.0], [string10, 37.8346]]

您的代码应该如下所示,然后:

    List<List<Object>> myRowValues = new ArrayList<>();
    for (int j = 0; j < myRowCount; j++) {
        myRowValues.add(j, new ArrayList<>());
        for (int i = 0; i < myColumnCount; i++) {
            myRowValues.get(j).add(aDestinationTable.getValueAt(j, i));
        }
    }

    System.out.println(myRowValues);