Mẫu chuyển đổi dữ liệu

Nhập dữ liệu trong Java

Anthony Markham

VP Quant Developer

Hàm Map

  • Biến đổi từng phần tử trong một cột
DoubleColumn celsius = DoubleColumn.create("Celsius", 0, 10, 20, 30);

DoubleColumn fahrenheit = celsius.map(c -> c * 9.0/5.0 + 32); table.addColumns(fahrenheit.setName("Fahrenheit"));
Celsius Fahrenheit
0.0 32.0
10.0 50.0
20.0 68.0
30.0 86.0
Nhập dữ liệu trong Java

Hàm Reduce

  • Kết hợp tất cả giá trị trong một cột thành một kết quả duy nhất
  • Dùng mẫu tích lũy (như sum, max, hoặc logic tùy chỉnh)
  • Hữu ích cho các phép thống kê và phân tích
// Tìm tổng doanh số
double totalSales = table.doubleColumn("Sales").reduce(0, Double::sum);
250000
// Tìm số lượng lớn nhất
double largeSales = table.doubleColumn("Sales").reduce(0, (acc, x) -> acc + (x > 5000 ? 1 : 0));
68
Nhập dữ liệu trong Java

Duyệt hàng với forEach

  • Lặp qua từng hàng trong một bảng
DoubleColumn difference = DoubleColumn.create("Difference");
table.forEach(row -> {
    double celsius = row.getDouble("Celsius");
    double fahrenheit = row.getDouble("Fahrenheit");
    difference.append(fahrenheit - celsius);
});

table.addColumns(difference);
Celsius Fahrenheit Difference
0.0 32.0 32.0
10.0 50.0 40.0
20.0 68.0 48.0
Nhập dữ liệu trong Java

Chuỗi chuyển đổi (pipelines)

  • Xâu chuỗi nhiều thao tác với nhau
  • Tăng khả năng đọc và bảo trì mã ✅
  • Xử lý dữ liệu hiệu quả ✅
Table result = originalTable
    .where(numberColumn("Age").isGreaterThan(18)) // Lọc Age > 18

.addColumns( numberColumn("Income").map(i -> i * 1.1).setName("AdjustedIncome") );
// Tính thu nhập trung bình double avgIncome = result.doubleColumn("AdjustedIncome") .reduce(0.0, Double::sum) / result.rowCount();
Nhập dữ liệu trong Java

Tổng kết

  • map() - áp dụng một hàm để biến đổi giá trị cột
  • forEach() - lặp qua các hàng để truy cập nhiều cột
  • reduce() - tổng hợp và tóm tắt dữ liệu thành các giá trị đơn

Một hình minh họa ba hàm chuyển đổi dữ liệu

Nhập dữ liệu trong Java

Cùng luyện tập nào!

Nhập dữ liệu trong Java

Preparing Video For Download...