code: public static List<Map<String, String>> getCsvDataListMap(String fileName,
        boolean headerPresent) throws IOException {
      final List<Map<String, String>> result = Lists.newArrayList();
      new CsvReader(fileName, headerPresent)
          .processReader(
              (headers, line, lineNumber) -> {
                Map<String, String> data = Maps.newHashMap();
                for (int i = 0; i < line.length; i++) {
                  if (headers != null) {
                    data.put(headers[i], line[i]);
                  } else {
                    data.put(i + "", line[i]);
                  }
                }
                result.add(data);
              });
      return result;
    }
docs: Returns a {@code List<Map<String, String>>} that contains all rows with
  a field mapping defined by the header. If no header is present,
  then each field is the 0-indexed column number.
  
  @param fileName the CSV file to load
  @param headerPresent {@code true} if the first line is the header
  @return a {@code List<Map<String, String>>} that contains all rows with
  with a field mapping defined by the header if present.
  @throws IOException if there was an exception reading the file