java - 如何使用条件数组过滤数组
问题描述
我有 2 个数组。在 1 个阵列中,我有具有属性的虚拟机。在另一个数组中,我有属性值。我想遍历第一个数组并从第二个数组中过滤出具有属性值的元素。但是当我开始过滤它时,会发生以下情况:
我开始第一个数组的迭代。对于第一个数组的每个元素,我遍历第二个数组中的每个元素并比较值,但它不起作用,因为它依次从第二个数组中获取值,我需要它们与逻辑和 (&&)。
for (VirtualMachine vm: VmArray) {
listOfVirtualMachinesToBuild.forEach(
vmFilter-> {
if (vmFilter.getType().equals(vm.getType())) {
Optional<DslModel.DiscoverIf[]> discoverIfOptional =
Optional.ofNullable(vmFilter.getDiscoverIf());
if (discoverIfOptional.isPresent())
for (int i = 0; i < vmFilter.getDiscoverIf().length; i++) {
if (vm.getProperty(
vmFilter.getDiscoverIf()[i].getCondition())
.equals(vmFilter.getDiscoverIf()[i].getValue())) {
specificEntitiesToBuild.add(vm);
}
}
} else {
specificEntitiesToBuild.add(vm);
}
}
});
}
你有什么想法吗?
解决方案
您可以使用流 API。我将使用 s 进行演示,String
但同样适用于任何课程:
String[] strings = {"a", "b", "c"};
Stream<String> stream = Arrays.stream(strings);
String[] filtered = stream.filter(s -> s.equals("a")).toArray(String[]::new);
如果您想检查 aString
是否包含在 a 中String[]
(以查找“属性”),我认为您的意图是,您可以执行以下操作:
public boolean propertyExists(String property) {
return Arrays.stream(propertyArray).anyMatch(s -> s.equals(property));
}
有点不清楚你在问什么,所以这是我最好的猜测。如果您编辑您的问题以显示您的实际代码,它会更容易提供帮助。
推荐阅读
- spring - 每次我将项目作为 spring 应用程序运行时,spring data jpa 都会附加 create 语句,
- javascript - d3.js 棒棒糖图表 - 动画
- javascript - React Native - 模态触发按钮始终可见
- python - Pyspark - 将两列中的值转换为字典
- python - TF2、Tensorflow Probability 随机种子生成器和 VAE
- node.js - 节点缓存是否使用锁
- python - 使用python读取vb文件时无法识别的符号
- php - PHP MYSQL ODBC 连接成功但未检索数据
- amazon-web-services - 如何将 AWS 应用程序负载均衡器和 NAT 网关配置为具有公共 IP
- node.js - 如何在 Apple Silicon M1 上原生安装 NodeJS?