【发布时间】:2021-07-22 09:30:54
【问题描述】:
我的目标是使用 Set 定位并打印我的数据中的任何缺失值 界面。
我有一个像下面这样的 POJO
public class Info {
private final String folder;
private final String version;
private final String key;
public static Builder builder() {
return new Builder();
}
public static Builder builder(Info info) {
return new Builder(info);
}
private Info(Builder builder) {
this.folder = builder.folder;
this.version = builder.version;
this.key = builder.key;
public String getFolder() {
return folder;
}
public String getVersion() {
return version;
}
public String getCreated() {
return created;
}
// toString(), hashCode(), equals()
// Builder class
public Builder withFolder(String folder){
this.folder = folder;
return this;
}
// withVersion(String version)
// withKey(String key)
public Info build(){
return new Info(this);
}
}
使用下面的代码,我从我的数据源创建一个列表。
List<Info> newList = previousList.stream().map(m -> Info.builder()
.withFolder(m.getFolder())
.withKey(m.getKey())
.withVersion(m.getVersion())
.build())
.collect(Collectors.toList());
// Printed output is below
list.forEach(System.out::println);
下面是类似于我的列表输出的输出。 显示了两个示例文件夹和两个示例丢失文件。 每个键都有多个版本号。
// Output
[folder=folderA, version=3.48.137, key=fileA-sources.jar]
[folder=folderA, version=3.48.128, key=fileA-sources.jar]
[folder=folderA, version=3.48.125, key=fileA-sources.jar]
[folder=folderA, version=3.48.137, key=fileA-javadoc.jar]
[folder=folderA, version=3.48.128, key=fileA-javadoc.jar]
[folder=folderA, version=3.48.125, key=fileA-javadoc.jar]
[folder=folderA, version=3.48.137, key=fileA.jar]
[folder=folderA, version=3.48.128, key=fileA.jar]
// Missing [folder=folderA, version= 3.48.125, key=fileA.jar]
[folder=folderB, version=1.7.16, key=fileB.pom]
[folder=folderB, version=1.7.14, key=fileB.pom]
[folder=folderB, version=1.7.12, key=fileB.pom]
[folder=folderB, version=1.7.16, key=fileB.jar]
[folder=folderB, version=1.7.14, key=fileB.jar]
// Missing [folder=folderB, version 1.7.12, key=fileB.jar]
下面是我将列表转换为集合的流。
Set<Info> set = list.stream().map(m -> Info.builder()
.withFolder(m.getFolderKey())
.withVersion(m.getVersion())
.withKey(m.getKey())
.build()).collect(Collectors.toSet());
我的目标是使用 Set 在我的数据中查找和打印任何缺失值。特别是版本号。
我想比较作为 fileA-sources.jar、fileA-javadoc.jar 和 fileA.jar 一部分的版本号,以便找出缺失的部分。有关缺少条目的注释示例,请参见上面的输出。
我的数据包含七种不同的文件类型,并且有许多与上述两种类似的条目。
我对 Java 还很陌生,很可能错过了一些非常基本的东西。我意识到我的计划可能完全不可行,因此我们感谢任何帮助或正确方向的建议。谢谢。
【问题讨论】:
-
看起来你已经显示了处理的输出,但是没有输入,很难理解你想要什么。您也可以将输入添加到您的问题中吗?
-
我添加了输入,并希望在键 fileA.ext1、fileA.ext2 等中识别任何缺失的版本号。 fileA.ext1 和 fileA.ext2 应该具有完全相同数量的版本和相应的密钥。所以,我的目标是找到缺失的版本。
-
我们对您的
Object和SetObject课程一无所知。令人惊讶的是,您似乎对同一件事有两个不同的课程。此外,将您自己的类命名为Object是一个坏主意。然后,当我读到这句话“回顾一下:我想比较任何缺少的键和版本号的键集和版本号”时,我感到很惊讶。你之前没有对这个要求说过任何话,所以“recap”不合适。事实上,那句话之前的冗长内容似乎与您的实际任务完全无关。 -
感谢您的意见。我会努力澄清我的问题。
标签: java list set java-stream