用Java实现两个表的交叉并集并写入文本
时间: 2024-05-04 14:20:19 浏览: 84
假设我们有两个表 TableA 和 TableB,每个表都包含一个名为 "id" 的整数列。我们的目标是获取 TableA 和 TableB 的交叉并集,并将结果写入文本文件。
以下是使用 Java 实现该功能的示例代码:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class TableIntersectionUnion {
public static void main(String[] args) {
// 创建 TableA 和 TableB
int[] tableA = { 1, 2, 3, 4, 5 };
int[] tableB = { 3, 4, 5, 6, 7 };
// 计算交叉并集
Set<Integer> intersection = new HashSet<>();
Set<Integer> union = new HashSet<>();
for (int i = 0; i < tableA.length; i++) {
if (contains(tableB, tableA[i])) {
intersection.add(tableA[i]);
}
union.add(tableA[i]);
}
for (int i = 0; i < tableB.length; i++) {
if (!contains(tableA, tableB[i])) {
union.add(tableB[i]);
}
}
// 将结果写入文本文件
String resultPath = "result.txt";
writeToFile(resultPath, "Intersection: " + intersection.toString() + "\n");
writeToFile(resultPath, "Union: " + union.toString());
}
private static boolean contains(int[] arr, int val) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == val) {
return true;
}
}
return false;
}
private static void writeToFile(String path, String content) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(path, true))) {
writer.append(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们首先创建了 TableA 和 TableB,并使用 HashSet 实现了交叉并集的计算。然后,我们使用 BufferedWriter 将结果写入名为 "result.txt" 的文本文件中。注意,我们使用了 try-with-resources 语句来确保 BufferedWriter 能够正确关闭。
阅读全文