[ 
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13230147#comment-13230147
 ] 

Sebb commented on CSV-65:
-------------------------

bq. I preferred a null array to save some memory.

The empty string array is immutable and can be safely shared.

Using null increases the code because have to check for null.
                
> Header support
> --------------
>
>                 Key: CSV-65
>                 URL: https://issues.apache.org/jira/browse/CSV-65
>             Project: Commons CSV
>          Issue Type: New Feature
>          Components: Parser
>            Reporter: Emmanuel Bourg
>             Fix For: 1.0
>
>         Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java
>
>
> Commons CSV is missing some elements to help dealing with CSV file headers.
> With the current API one has to write the following code to read the fields 
> by name:
> {code:java}
> CSVParser parser = new CSVParser(in);
> Iterator<String[]> it = parser.iterator();
> // read the header
> String[] header = it.next();
> // build a name to index mapping
> Map<String, Integer> mapping = new HashMap<>();
> for (int i = 0; i < header.length; i++) {
>     mapping.put(header[i], i);
> }
> // parse the records
> for (String[] record : parser) {
>     Person person = new Person();
>     person.setName(record[mapping.get("name")]);
>     person.setEmail(record[mapping.get("email")]);
>     person.setPhone(record[mapping.get("phone")]);
>     persons.add(person);
> }
> {code}
> The header should be defined in the format with something like this:
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> {code}
> Then either the parser provides the column name to index mapping 
> automatically:
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> CSVParser parser = new CSVParser(in, format);
> // parse the records
> for (String[] record : parser) {
>     Person person = new Person();
>     person.setName(record[parser.indexOf("name")]);
>     person.setEmail(record[parser.indexOf("email")]);
>     person.setPhone(record[parser.indexOf("phone")]);
>     persons.add(person);
> } 
> {code}
> or the parser returns a Map like structure similar to a JDBC ResultSet 
> (replacing String[]):
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> for (CSVRecord record : format.parse(in)) {
>     Person person = new Person();
>     person.setName(record.get("name"));
>     person.setEmail(record.get("email"));
>     person.setPhone(record.get("phone"));
>     persons.add(person);
> } 
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to