import java.util.HashMap;
import java.util.Map;
public class PeopleAddressList { private Map<String, String> addressList; public PeopleAddressList() { addressList = new HashMap<>(); }
public void addPerson(String name, String address) { addressList.put(name, address); }
public String getAddress(String name) { return addressList.get(name); }
public void removePerson(String name) { addressList.remove(name); }
public int size() { return addressList.size(); }
public void clear() { addressList.clear(); }
public void printAddressList() { for (String name : addressList.keySet()) { System.out.println(name + ” : ” + addressList.get(name)); } }
public static void main(String[] args) { PeopleAddressList list = new PeopleAddressList(); list.addPerson(“John Doe”, “123 Main Street”);
list.addPerson(“Jane Doe”, “456 Elm Street”); list.printAddressList(); }}
//Main class as below
import java.util.HashMap;
import java.util.Map;
public class AddressSummary {
private PeopleAddressList addressList; public void setAddressList(PeopleAddressList addressList) { this.addressList = addressList; }
public String toString() { StringBuilder sb = new StringBuilder(); for (String name : addressList.keySet()) { sb.append(name + ” : ” + addressList.get(name) + “\n”); } return sb.toString(); }
public static void main(String[] args) { AddressGeneration generation = new AddressGeneration(); PeopleAddressList list = generation.getPeopleAddressList(); AddressSummary summary = new AddressSummary(); summary.setAddressList(list); System.out.println(summary); }}
public class AddressGeneration {
public PeopleAddressList getPeopleAddressList() { PeopleAddressList list = new PeopleAddressList(); list.addPerson(“John Doe”, “123 Main Street”);
list.addPerson(“Jane Doe”, “456 Elm Street”);
return list; }}
//Facade Design pattern
import java.util.HashMap;
import java.util.Map;
public class AddressSummaryFacade {
private AddressGeneration generation;
private AddressSummary summary;
public AddressSummaryFacade() {
generation = new AddressGeneration();
summary = new AddressSummary();
}
public String getAddressSummary() {
summary.setAddressList(generation.getPeopleAddressList());
return summary.toString();
}
}
public class Main {
public static void main(String[] args) {
AddressSummaryFacade facade = new AddressSummaryFacade();
System.out.println(facade.getAddressSummary());
}
}
tablesaw vs apachepoi
import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import tech.tablesaw.api.Table;import org.openjdk.jmh.annotations.*;import java.io.File;import java.io.FileInputStream;import java.io.IOException;@BenchmarkMode(Mode.Throughput)@Warmup(iterations = 3, time = 1)@Measurement(iterations = 5, time = 1)@State(Scope.Benchmark)public class ExcelReadBenchmark { private File excelFile; private Table tablesawTable; @Setup public void setup() { // Initialize your Excel file and Tablesaw table here excelFile = new File(“your-excel-file.xlsx”); // Replace with your Excel file path tablesawTable = Table.read().csv(“your-csv-file.csv”); // Replace with your CSV file path } @Benchmark public void readAndPrintWithTablesaw() { // Perform reading and printing using Tablesaw String column1 = tablesawTable.column(“Column1”).toString(); // Print or process column1 here } @Benchmark public void readAndPrintWithApachePOI() throws IOException { // Perform reading and printing using Apache POI FileInputStream inputStream = new FileInputStream(excelFile); Workbook workbook = new XSSFWorkbook(inputStream); Sheet sheet = workbook.getSheetAt(0); // Assuming the data is in the first sheet for (Row row : sheet) { Cell cell = row.getCell(0); // Access the first cell (column 1) if (cell != null) { String cellValue = cell.toString(); // Print or process cellValue here } } workbook.close(); inputStream.close(); } public static void main(String[] args) throws Exception { org.openjdk.jmh.Main.main(args); }}
read from 100 to 200
import tech.tablesaw.api.*;
import tech.tablesaw.io.csv.CsvReadOptions;
public class ReadCSVWithTablesaw {
public static void main(String[] args) {
// Define the path to your CSV file
String csvFilePath = "path/to/your/file.csv"; // Replace with your CSV file path
// Define the range of rows you want to read (100 to 200)
int startRow = 100;
int endRow = 200;
try {
// Define read options
CsvReadOptions options = CsvReadOptions.builder(csvFilePath)
.header(true) // Assuming the CSV file has a header row
.build();
// Read the CSV file into a Table
Table table = Table.read().csv(options);
// Extract the desired rows (100 to 200) from column 1
Column<String> column1 = table.column(1).subList(startRow, endRow + 1).asStringColumn();
// Print or process the values in column1
for (String value : column1) {
System.out.println(value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}