当前位置: 首页 > 知识库问答 >
问题:

如何正确添加数据从String[]到ArrayList

钱志
2023-03-14

因此,对于我的学校项目,我们将使用SQL数据库,并在JFrame面板上显示值。

为了在JTable中显示数据,我们必须要求下一个语法:(def)

JTable table=新的JTable(字符串[][]数据,字符串[]头)

因为我不知道有多少查询我将不得不处理我们将他们读到一个ArrayList

public class DBTest {

    public ArrayList<String[]> dataArr = new ArrayList<>();
    public String[] varArr = new String[3];

    public ArrayList<String[]> parseJSON(String jsonString){
        try {
            JSONArray array = new JSONArray(jsonString);
   
                dataArr = new ArrayList<>();
     
                for (int i = 0; i < array.length(); i++) {
                    JSONObject curObject = array.getJSONObject(i);
                    varArr[0] = curObject.getString("nameSensor");
                    varArr[1] = curObject.getString("value");
                    varArr[2] = curObject.getString("unitSensor");
                    
                    dataArr.add(varArr);
                    System.out.println(Arrays.toString(varArr));
                }
            for (int i = 0; i < array.length(); i++) {
                 System.out.println(dataArr.get(i));
            } 
            return dataArr;


        }
        catch (JSONException e){
            e.printStackTrace();
        }
        return null;
    }
}

对于第一次打印:我会得到正确的值例如。

输出

[“重量”、“500”、“克”]

[“高度”、“3”、“m”]

但是一旦我将这些String[]数组添加到ArrayList并打印它,我将得到:

输出

[“高度”、“3”、“m”]

[“高度”、“3”、“m”]


共有1个答案

呼延宪
2023-03-14

在方法中将String[]varArr作为局部变量移动:

public class DBTest {

    public ArrayList<String[]> dataArr = new ArrayList<>();
    //Remove this line of code (delete it)
    //public String[] varArr = new String[3];

    public ArrayList<String[]> parseJSON(String jsonString){
        try {
            JSONArray array = new JSONArray(jsonString);
   
                dataArr = new ArrayList<>();
     
                for (int i = 0; i < array.length(); i++) {
                    JSONObject curObject = array.getJSONObject(i);
                    //declare it locally
                    String[] varArr = new String[] {
                        curObject.getString("nameSensor"),
                        curObject.getString("value"),
                        curObject.getString("unitSensor")
                    };
                    
                    dataArr.add(varArr);
                    System.out.println(Arrays.toString(varArr));
                }
            for (int i = 0; i < array.length(); i++) {
                 System.out.println(dataArr.get(i));
            } 
            return dataArr;


        }
        catch (JSONException e){
            e.printStackTrace();
        }
        return null;
    }
}

其他改进:

  • 尝试将代码设计为使用接口而不是具体类,例如返回List而不是ArrayList
  • 避免在方法失败时返回null。最好是返回一个空列表,或者抛出一个自定义异常,并提供一条适当的消息来帮助您理解问题。这还可以利用您的维护工作
  • 仅当需要维护状态(值)以供以后使用时才使用属性。否则,最好使用局部变量dataArr属性似乎不需要(至少从这段代码中是这样)

这样,代码将如下所示:

public class DBTest {
    public List<String[]> parseJSON(String jsonString) {
        List<String[]> dataArr = new ArrayList<>();
        try {
            JSONArray array = new JSONArray(jsonString);
            for (int i = 0; i < array.length(); i++) {
                JSONObject curObject = array.getJSONObject(i);
                String[] varArr = new String[] {
                    curObject.getString("nameSensor"),
                    curObject.getString("value"),
                    curObject.getString("unitSensor")
                };
                    
                dataArr.add(varArr);
                System.out.println(Arrays.toString(varArr));
            }
            for (int i = 0; i < array.length(); i++) {
                 System.out.println(dataArr.get(i));
            } 
        }
        catch (JSONException e) {
            e.printStackTrace();
        }
        return dataArr;
    }
}
 类似资料:
  • 问题内容: 我正在尝试将Integer数组添加到Set中,如下所示: 我收到以下错误提示, 其次,我也尝试按照以下步骤进行操作,但仍然出现错误, 如何在Java中正确地将Integer数组添加到Set中?谢谢。 问题答案: 您需要使用包装器类型才能使用 或 手动添加元素,例如 最后,如果您需要保留插入顺序,则可以使用。

  • 问题内容: 是否可以在不迭代整个数组的情况下将字符串添加到String数组的开头。 问题答案: 唯一的方法是维护环形缓冲区。也就是说,您有一个计数器,它记住起始位置,然后移动它而不是移动数组中的所有条目。这仅适用于您重新定义“开始”的含义。 请参阅ArrayDeque的源代码,其中包含三个字段 因此,添加到开始像这样 注意:它移动头部,而不是将所有元素向下移动阵列。

  • 我正在使用Spring 4.0.0. RELEASE,Spring数据共享1.7.0. M1,Spring Hateoas 0.8.0. RELEASE 我的资源是一个简单的POJO: 我的资源汇编程序将User对象转换为UserResources对象: 在我的UserController我想检索

  • 这是我的app.js 输入的数据用于分析图表,其中数据集必须在“标签”旁边显示一周中的每一天。我是AngularJS、ChartJS和JSON的新手,请建议 以下是请求数据的工作Plunkrhttp://plnkr.co/edit/Pfxc4JrKhv9SNlRUWqHi?p=preview

  • 问题内容: 现在我将数组作为字符串添加到正文中: 但是服务器需要在post参数上使用数组。如何添加数组而不是字符串?okhttp可以吗? 问题答案: 您当前正在以字符串形式发布。您将要模仿POST的复选框形式,用于 更多信息和良好的阅读, https://teamtreehouse.com/community/how-to-handle-multiple-checkboxes-values-in-

  • 问题内容: 将空列添加到pandas对象的最简单方法是什么?我偶然发现的最好的东西是 有没有那么不合常理的方法? 问题答案: 如果我理解正确,则应填写作业: