假如有abc等多个系统 每个系统有多个文档 ,每个系统根据不同的文类型获取该文件类型最新上传时间文档(文件类型(文件类型字段为idoctype)
分别为设计文档和评审记录文档,最新上传时间字段为 duptime )这个思路 和Java代码list怎莫处理
对于这个问题,可以使用一个嵌套的Map来处理。外层的Map的键是系统名称,值是内层Map。内层的Map的键是文件类型,值是最新上传时间对应的文档。
具体的Java代码如下所示:
Map<String, Map<String, Document>> systemDocuments = new HashMap<>();
// 假设有一个List<Document>对象存储了所有的文档信息
List<Document> documents = // 获取所有文档信息的代码
for (Document document : documents) {
String system = document.getSystem();
String docType = document.getDocType();
Date uploadTime = document.getUploadTime();
// 检查系统是否已存在于外层的Map中
if (!systemDocuments.containsKey(system)) {
systemDocuments.put(system, new HashMap<>());
}
// 检查文档类型是否已存在于内层的Map中
if (!systemDocuments.get(system).containsKey(docType)) {
systemDocuments.get(system).put(docType, document);
} else {
// 检查上传时间是否晚于已存在的文档的上传时间
Document existingDocument = systemDocuments.get(system).get(docType);
if (uploadTime.after(existingDocument.getUploadTime())) {
systemDocuments.get(system).put(docType, document);
}
}
}
// 遍历系统和文档类型,获取最新上传时间的文档
for (String system : systemDocuments.keySet()) {
for (String docType : systemDocuments.get(system).keySet()) {
Document latestDocument = systemDocuments.get(system).get(docType);
// 执行相应的操作,如下载文档等
}
}
// 创建一个新的Map来存储最新文档
Map<String, Document> latestDocuments = new HashMap<>();
// 遍历系统和文档类型,获取最新上传时间的文档
for (String system : systemDocuments.keySet()) {
for (String docType : systemDocuments.get(system).keySet()) {
Document latestDocument = systemDocuments.get(system).get(docType);
String key = system + "_" + docType; // 组合键,例如:system1_design
latestDocuments.put(key, latestDocument);
}
}
// 遍历最新文档Map进行操作或输出
for (String key : latestDocuments.keySet()) {
Document document = latestDocuments.get(key);
System.out.println("System: " + document.getSystem() + ", DocType: " + document.getDocType() + ", UploadTime: " + document.getUploadTime());
// 执行其他操作,如下载文档等
}
以上代码会将最新上传时间的文档重新封装成一个新的Map形式,并进行操作或输出。你可以根据需要修改输出的方式或相应的操作。
标签:Map,多个,get,系统,system,docType,文档,systemDocuments From: https://www.cnblogs.com/codeLearn/p/17979927