Let’s see how to read CSV file in Java and map the records to Java object using Open CSV library.

How to read CSV file in Java:

Open CSV is an easy to use CSV (comma-separated value) library for java users, using this library we can easily convert CSV row into an Object.

Maven dependency:

Add the below maven dependency in your application’s pom.xml file

pom.xml
<dependency>
  <groupId>com.opencsv</groupId>
  <artifactId>opencsv</artifactId>
  <version>4.1</version>
</dependency>

Sample CSV file:

data.csv
hotel_name,distance,review_score,Price,Scraping_time,Data_rank,Page_number,CheckInDate,CheckOutDate
Artim Hotel,1.8 miles from centre,7.7,€ 81,2020-03-25 10:41:23,2,1,Wednesday 25 March 2020,Thursday 26 March 2020
Hotel Cityblick,3.1 miles from centre,5.9,€ 34,2020-03-25 10:41:23,4,1,Wednesday 25 March 2020,Thursday 26 March 2020
annabanana Hostel,2.5 miles from centre,8.1,€ 50,2020-03-25 10:41:23,6,1,Wednesday 25 March 2020,Thursday 26 March 2020

Prepare a Java class to map the above CSV data.

CSV_Object.java
public class CSV_Object{
    private String hotelName;
    private String distance;
    private String reviewScore;
    private String price;
    private String scrapingTime;
    private String dataRank;
    private String pageNumber;
    private String checkinDate;
    private String ceckoutDate;
    //setters/getters..
}

Now let’s parse the above CSV file using open CSV library.

CSVParser.java
import com.opencsv.CSVReader;
import com.opencsv.CSVReaderBuilder;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
public class CSVParser {

    public void parse(){
        try{
            CSVReader reader=
                    new CSVReaderBuilder(new FileReader("C:/cgoka/data.csv")).
                            withSkipLines(1). // Skiping firstline as it is header
                            build();
            List<CSV_Object> csv_objectList=reader.readAll().stream().map(data-> {
                CSV_Object csvObject= new CSV_Object();
                csvObject.setHotelName(data[0]);
                csvObject.setDistance(data[1]);
                csvObject.setReviewScore(data[2]);
                csvObject.setPrice(data[3]);
                csvObject.setScrapingTime(data[4]);
                csvObject.setDataRank(data[5]);
                csvObject.setPageNumber(data[6]);
                csvObject.setCheckinDate(data[7]);
                csvObject.setCeckoutDate(data[8]);
                return csvObject;
            }).collect(Collectors.toList());
            csv_objectList.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output:

CSV_Object(hotelName=Artim Hotel, distance=1.8 miles from centre, reviewScore=7.7, price=€ 81, scrapingTime=2020-03-25 10:41:23, dataRank=2, pageNumber=1, checkinDate=Wednesday 25 March 2020, ceckoutDate=Thursday 26 March 2020)
CSV_Object(hotelName=Hotel Cityblick, distance=3.1 miles from centre, reviewScore=5.9, price=€ 34, scrapingTime=2020-03-25 10:41:23, dataRank=4, pageNumber=1, checkinDate=Wednesday 25 March 2020, ceckoutDate=Thursday 26 March 2020)
CSV_Object(hotelName=annabanana Hostel, distance=2.5 miles from centre, reviewScore=8.1, price=€ 50, scrapingTime=2020-03-25 10:41:23, dataRank=6, pageNumber=1, checkinDate=Wednesday 25 March 2020, ceckoutDate=Thursday 26 March 2020)

References:

Happy Learning 🙂