abc等多个系统 每个系统有多个文档 ,每个系统根据不同的文类型获取该文件类型最新上传时间文档

假如有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形式,并进行操作或输出。你可以根据需要修改输出的方式或相应的操作。

posted @ 2024-01-22 14:09  我的心儿  阅读(77)  评论(0)    收藏  举报