以下是一个示例代码,演示如何按照运行时参数对流进行排序:
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class StreamSortByRuntimeArgs {
public static void main(String[] args) {
List names = Arrays.asList("Alice", "Bob", "Charlie", "David");
if (args.length > 0) {
String sortType = args[0];
switch (sortType) {
case "asc":
sortNamesAscending(names);
break;
case "desc":
sortNamesDescending(names);
break;
default:
System.out.println("Invalid sort type. Please use 'asc' or 'desc'.");
}
} else {
System.out.println("No sort type provided. Please provide 'asc' or 'desc' as runtime argument.");
}
}
private static void sortNamesAscending(List names) {
List sortedNames = names.stream()
.sorted(Comparator.naturalOrder())
.collect(Collectors.toList());
System.out.println("Sorted names in ascending order: " + sortedNames);
}
private static void sortNamesDescending(List names) {
List sortedNames = names.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
System.out.println("Sorted names in descending order: " + sortedNames);
}
}
在该示例中,我们首先检查运行时参数是否提供了排序类型。如果提供了排序类型,我们使用 switch
语句根据参数值执行相应的排序方法。如果未提供排序类型,则打印一条相应的错误消息。
sortNamesAscending
方法使用 sorted
方法对流进行升序排序,并通过 collect
方法将排序结果收集到一个新的列表中。最后,打印排序后的结果。
sortNamesDescending
方法类似地使用 sorted
方法对流进行降序排序,并打印结果。
请注意,此示例假设运行时参数仅包含一个值,此值用于指定排序类型。如果需要处理多个参数或更复杂的逻辑,请相应地修改代码。