Java 将数据值作为整数类型而不是字符串写入CSV有什么好处?

Java 将数据值作为整数类型而不是字符串写入CSV有什么好处?,java,csv,filewriter,opencsv,file-writing,Java,Csv,Filewriter,Opencsv,File Writing,我正在合作一个项目,目前我已经建立了一个以字符串格式将数据写入CSV文件的程序。我在该项目中的合作伙伴说,他认为如果以整数格式编写,该产品会更有用,而我一直认为我们的可视化功能可以在读取CSV数据时简单地运行parseInt 我想在这里问这个问题,以获得一些关于使用基本数据类型(而不是字符串)写入文件所能获得的信息。Java看起来确实是以字符串形式写入CSV的,但他声称以int形式写入数据会更有效 这实际上更多的是一个概念性的问题,但我将包括我用来生成数据表的代码,以防上下文发生问题 //S

我正在合作一个项目,目前我已经建立了一个以字符串格式将数据写入CSV文件的程序。我在该项目中的合作伙伴说,他认为如果以整数格式编写,该产品会更有用,而我一直认为我们的可视化功能可以在读取CSV数据时简单地运行parseInt

我想在这里问这个问题,以获得一些关于使用基本数据类型(而不是字符串)写入文件所能获得的信息。Java看起来确实是以字符串形式写入CSV的,但他声称以int形式写入数据会更有效

这实际上更多的是一个概念性的问题,但我将包括我用来生成数据表的代码,以防上下文发生问题

  //Snippet only
  private void elementLocator() {
        //Declare ArrayList to hold values
        data = new ArrayList<ArrayList<String>>();
        
        //Build data table
        try {
            //Unique xpath string
            String prefix = "//*[@id=\"main_table_countries_today\"]/tbody[1]/tr[";
            int j = 2;
            System.out.println("Retrieving data...");
            for(int i = 1; i <= 222; i ++) {
                try {
                    //Initialize array to fill in to data row by row
                    ArrayList<String> parser = new ArrayList<String>();
                    for(j = 2; j <= 13; j ++) {
                        parser.add(driver.findElement(By.xpath(prefix + i + "]/td[" + j + "]")).getText());
                    }
                    //Use a boolean indicator to skip any row that has a blank 1st column
                    String w = parser.get(0);
                    boolean v = w.isEmpty();
                    if(v) {
                        continue;
                    }
                    else {
                        data.add(parser);
                    }
                //Catch errors
                } catch (Exception e) {
                    e.printStackTrace();;
                    continue;
                }
        }
  }

  public void makeCSV() throws IOException {
        //Create output file only if it does not already exist
        EST est = new EST();
        //Pull year, month, day for file name
        String dt = est.getDate();
        f = new File(home + "\\Climate Dev Pegasus\\Data\\Worldometer\\" + dt + ".csv");
        if(!f.exists()) {
            try { 
                //Create FileWriter object with file as parameter 
                CSVWriter writer = new CSVWriter(new FileWriter(f, true));
                //Write headers
                String[] headers = "Country/Region, Total Cases, New Cases, Total Deaths, New Deaths, Total Recovered, Active Cases, Serious Cases, Tot Cases/1M pop, Deaths/1M pop, Total Tests, Tests/1M pop".split(",");
                writer.writeNext(headers);
                writer.flush();
                writer.close();
                //Give full modification permissions to file
                SetPermissions sp = new SetPermissions();
                sp.ChangePermissions(f);
            }catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        else {
        }
        path = Paths.get(home + "\\Climate Dev Pegasus\\Data\\Worldometer\\" + dt + ".csv");
        
        //Write data to file, allowing commas
        FileWriter csvWriter = new FileWriter(f,true);
        for(ArrayList<String> x : data) {
            for(String y : x) {
                String z = appendDQ(y);
                //int value = Integer.parseInt(z);
                csvWriter.append(z);
                csvWriter.append(",");
            }
            csvWriter.append("\n");
        }
        System.out.println("Data successfully written to file.");
        csvWriter.close();
}  
//仅限片段
私有void元素定位器(){
//声明ArrayList以保存值
数据=新的ArrayList();
//建立数据表
试一试{
//唯一xpath字符串
字符串前缀=“//*[@id=\”主表“今天的国家”]/tbody[1]/tr[”;
int j=2;
System.out.println(“检索数据…”);
对于(int i=1;i)我在思考这个问题时想到了一个答案:
我认为这是一个非常基本的问题

首先,最重要的是,该程序应该易于其他开发人员理解,同时它应该足够强大,最终用户在使用过程中不会受到干扰,例如加载时间过长。 但是要找到你问题的答案,你应该更进一步。这个程序应该在PC上运行还是在嵌入式系统上运行? 因为Java已经默认实现了string类,所以它从一开始就非常强大。当然,整数总是更具性能,因为它是一种原始数据类型!现在我假设给定的程序应该在PC或服务器上运行,而不是在嵌入式系统上运行,因为对于这种情况,像C这样的语言更适合。 我认为在这种情况下,使用字符串实际上更有意义,因为Java的舒适代码节省了开发时间,并使代码更易于其他开发人员阅读。此外,使用字符串可能会导致需要额外的方法将值转换为可供后续程序读取的格式。然而,这uld然后取消任何性能优势


最后但并非最不重要的一点是,这里可以参考一个有趣的例子。如果您以CSV格式导出Excel表格,那么带有长字符串的文件也将在那里构建。即使在那里,任何加载时间都不会对最终用户造成干扰(我认为)…

这完全取决于观点和上下文。我看不出有任何理由引用整数。但为什么要强迫人们处理具有众所周知的CSV格式(即…一个数字)的内容呢?这没有意义。反过来说:它提供了什么值来表示一个字符串形式的数字?@Dave Newton如果一个数字表示一个代码或其他不是数量的东西,将数字加上引号就意味着这一点。你是对的,人们希望数量值是一个没有引号的整数。@GilbertLeBlanc显然——但它不是一个整数数字,它是一个看起来像数字的标识符。典型示例:邮政编码。在美国,它是一个数字(甚至是一个带有zip+4的表达式),但不应将其视为一个。这就是为什么我说它(a)与上下文相关,(b)指定为“整数”因为这是OP使用的语言。如果他们的域模型中的数据类型是
int
,那么应该将其视为一种数据类型。如果他们的域模型是错误建模的,并且它*看起来像
int
,但不是…回到“上下文”部分。对不起,我想我已经很清楚了。