Java 中获取数组差集57


在 Java 中获取两个数组的差集是指找到一个包含在第一个数组中但不包含在第二个数组中的元素的新数组。这在各种场景中很有用,例如比较两个列表、删除重复项或从一个集合中过滤掉另一个集合中的元素。

使用 ()

最简单的方法是使用 () 方法。该方法从调用它的列表中删除所有在给定集合中找到的元素。我们可以将两个数组转换为列表,然后使用 removeAll() 方法来获取差集。
import ;
import ;
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {2, 3};
// 将数组转换为列表
List list1 = (arr1).boxed().toList();
List list2 = (arr2).boxed().toList();
// 从 list1 中删除 list2 中的所有元素
(list2);
// 将差集转换回数组
int[] diff = ().mapToInt(Integer::valueOf).toArray();
// 打印差集
((diff)); // 输出:[1, 4, 5]
}
}

使用 ()

另一个选择是使用 () 方法。该方法返回一个包含在第一个集合中但不包含在第二个集合中的元素的新集合。我们可以将两个数组转换为集合,然后使用 difference() 方法来获取差集。
import ;
import ;
import ;
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {2, 3};
// 将数组转换为集合
Set set1 = new HashSet((arr1).boxed().toList());
Set set2 = new HashSet((arr2).boxed().toList());
// 获取差集
Set diff = (set2);
// 将差集转换回数组
int[] result = ().mapToInt(Integer::valueOf).toArray();
// 打印差集
((result)); // 输出:[1, 4, 5]
}
}

自定义实现

如果需要更多控制或自定义处理,我们可以实现自己的方法来获取数组差集。我们可以遍历第一个数组,并检查每个元素是否包含在第二个数组中。如果不包含,则将其添加到一个新数组中,该数组将作为差集返回。
public class Main {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {2, 3};
// 创建一个新数组来存储差集
int[] diff = new int[];
int diffIndex = 0;
// 遍历第一个数组
for (int num1 : arr1) {
// 检查 num1 是否包含在第二个数组中
boolean found = false;
for (int num2 : arr2) {
if (num1 == num2) {
found = true;
break;
}
}
// 如果没有找到,将其添加到差集中
if (!found) {
diff[diffIndex++] = num1;
}
}
// 调整 diff 数组的大小以匹配差集的实际大小
diff = (diff, diffIndex);
// 打印差集
((diff)); // 输出:[1, 4, 5]
}
}


在 Java 中获取数组差集有几种方法,具体取决于所需的定制化和性能考虑。() 和 () 提供了方便的内置解决方案,而自定义实现提供了更大的灵活性。根据特定场景选择最合适的实现至关重要。

2024-12-05


上一篇:Java 代码编译详解:从源代码到可执行字节码

下一篇:Java 中使用反射进行动态方法调用