Practical Conversion Examples
Real-World Conversion Scenarios
graph LR
A[Practical Conversions] --> B[Data Transformation]
A --> C[Type Mapping]
A --> D[Complex Transformations]
A --> E[Performance Optimization]
1. List to Map Conversion
Basic Conversion
// Converting List of Users to Map by ID
List<User> users = Arrays.asList(
new User(1, "Alice"),
new User(2, "Bob")
);
Map<Integer, String> userMap = users.stream()
.collect(Collectors.toMap(
User::getId,
User::getName
));
2. Handling Duplicate Keys
// Resolving Duplicate Keys
List<User> users = Arrays.asList(
new User(1, "Alice"),
new User(1, "AliceNew")
);
Map<Integer, String> userMap = users.stream()
.collect(Collectors.toMap(
User::getId,
User::getName,
(oldValue, newValue) -> newValue
));
DTO Conversion
class Employee {
private String name;
private double salary;
}
class EmployeeDTO {
private String displayName;
private String salaryCategory;
}
List<EmployeeDTO> convertEmployees(List<Employee> employees) {
return employees.stream()
.map(emp -> {
EmployeeDTO dto = new EmployeeDTO();
dto.setDisplayName(emp.getName());
dto.setSalaryCategory(
emp.getSalary() > 50000 ? "High" : "Low"
);
return dto;
})
.collect(Collectors.toList());
}
// Transforming Nested Structures
List<Department> departments = // ... existing list
Map<String, List<String>> employeesByDepartment = departments.stream()
.collect(Collectors.toMap(
Department::getName,
dept -> dept.getEmployees().stream()
.map(Employee::getName)
.collect(Collectors.toList())
));
5. Type-Safe Conversions
Conversion Type |
Method |
Use Case |
String to Integer |
Integer::parseInt |
Numeric parsing |
Object to Optional |
Optional::ofNullable |
Null safety |
Collection to Stream |
.stream() |
Data processing |
// Efficient Large Dataset Conversion
List<String> largeDataset = // ... large list of strings
List<Integer> processedData = largeDataset.parallelStream()
.map(Integer::parseInt)
.filter(num -> num > 100)
.collect(Collectors.toList());
Error Handling in Conversions
// Safe Conversion with Error Handling
List<Integer> safeConversion(List<String> input) {
return input.stream()
.map(s -> {
try {
return Integer.parseInt(s);
} catch (NumberFormatException e) {
return null;
}
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
LabEx Recommendation
LabEx suggests practicing these conversion patterns to develop robust stream manipulation skills in real-world scenarios.
Best Practices
- Use appropriate conversion methods
- Handle potential exceptions
- Consider performance implications
- Choose immutable transformations
- Leverage method references