能否提供一个Java程序示例,该程序接受用户输入两个集合(可以是任意类型),并计算并输出这两个集合的笛卡尔积?
时间: 2024-11-09 16:17:13 浏览: 7
Java中如何比较两个数组中元素是否相同
当然,下面是一个简单的Java程序,它使用Scanner从用户那里获取输入,并计算两个集合(这里假设都是整数列表)的笛卡尔积:
```java
import java.util.*;
public class CartesianProductExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个集合元素,以逗号分隔:");
String firstSetInput = scanner.nextLine();
List<Integer> list1 = parseInput(firstSetInput).stream().map(Integer::parseInt).collect(Collectors.toList());
System.out.println("请输入第二个集合元素,以逗号分隔:");
String secondSetInput = scanner.nextLine();
List<Integer> list2 = parseInput(secondSetInput).stream().map(Integer::parseInt).collect(Collectors.toList());
List<List<Integer>> product = getCartesianProduct(list1, list2);
printResult(product);
}
private static <T> List<T[]> parseInput(String input) {
return Arrays.stream(input.split(",")).map(T::valueOf).collect(Collectors.toList());
}
private static <T> List<List<T>> getCartesianProduct(List<T> list1, List<T> list2) {
return list1.stream()
.flatMap(item1 -> list2.stream().map(item2 -> Collections.singletonList(new Object[]{item1, item2})))
.collect(Collectors.toList());
}
private static void printResult(List<List<?>> result) {
for (List<?> row : result) {
System.out.println(row);
}
}
}
```
在这个程序中,我们首先读取用户输入的两个集合字符串,然后解析成Integer列表。然后使用getCartesianProduct函数计算笛卡尔积,并打印结果。
注意,这个例子适用于数值类型的集合,如果你需要处理不同类型的数据,你需要调整`parseInput`方法以适应相应的数据类型。
阅读全文