有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从列表返回二维数组的java没有正确索引

好的,我已经成功地把一个列表变成了一个二维数组。唯一的问题是输出只对它进行一次索引,因此基本上,如果每个列表中有10个元素要添加到二维数组中,那么二维数组将只有一个包含“n”个元素的索引

比如说

我想要

{{1,2,3}, {4,5,6}, {7,8,9}}

相反,它正在返回:

{1,2,3,4,5,6,7,8,9}

我听取了以下方面的建议: Convert ArrayList into 2D array containing varying lengths of arrays

这是我的密码:

public static Object[][] getOrderCreateTestCases(){
    List<List<String>> list = new ArrayList<>();
    List<String> values = new ArrayList<>();
    try {
        JSONArray jObject = (JSONArray)getClient().sendGet(String.format("get_cases/12&suite_id=136"));
        for(Object obj : jObject){
            JSONObject jObj = (JSONObject)obj;
            values.add(jObj.get("title").toString());
            values.add(jObj.get("id").toString());
            values.add(jObj.get("custom_order_type").toString());
            values.add(jObj.get("custom_product_type").toString());
            values.add(jObj.get("custom_free_shipping").toString());
            values.add(jObj.get("custom_billing_country").toString());
            values.add(jObj.get("custom_shipping_country").toString());
            list.add(values);
            for(int i=0; i<list.size(); i++){
                valuesString = new Object[list.get(i).size()][];
                List<String> row = list.get(i);
                valuesString[i] = row.toArray(new String[row.size()]);
                //System.out.print(valuesString[i]);
                break;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    } catch (APIException e) {
        e.printStackTrace();
    }
    return valuesString;
}

我正在使用DataProvidersTestNG进行处理,它们需要返回一个二维对象数组,我可以理解为什么。我从JSON数组(json simple)中解析出某些数据,将其添加到列表中,然后转换为二维数组。假设它从ID=5546获取信息,然后是下一个id=4987,下一个id=3847等等。。任何帮助都将不胜感激

更新

好吧,我想我明白它为什么这么做了,但我仍然不知道如何解决这个问题。所以基本上,当它循环并开始新的数据集时,它需要创建一个新的数组

{{List1},{List2},{List3}


共 (1) 个答案

  1. # 1 楼答案

    我想getOrderCreateTestCases是您的数据提供者。 如果是的话,你能这样试试吗

    public static Object[][] getOrderCreateTestCases() {
        List<List<String>> list = new ArrayList<>();
        List<String> values = new ArrayList<>();
    
        try {
            JSONArray jObject = (JSONArray) getClient().sendGet(
                    String.format("get_cases/12&suite_id=136"));
    
            for (Object obj : jObject) {
    
                try {
    
                    JSONObject jObj = (JSONObject) obj;
                    values.add(jObj.get("title").toString());
                    values.add(jObj.get("id").toString());
                    values.add(jObj.get("custom_order_type").toString());
                    values.add(jObj.get("custom_product_type").toString());
                    values.add(jObj.get("custom_free_shipping").toString());
                    values.add(jObj.get("custom_billing_country").toString());
                    values.add(jObj.get("custom_shipping_country").toString());
                    list.add(values);
                } catch (Exception e) {
                    // Ignore
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (APIException e) {
            e.printStackTrace();
        }
        valuesString = new Object[list.get(i).size()][];
    
        for (int i = 0; i < list.size(); i++) {
            List<String> row = list.get(i);
            valuesString[i] = row.toArray(new String[row.size()]);
        }
    
        return valuesString;
    }