我想存储有关文件类型和可能的文件扩展名的信息。 我想做的是,如果我提供文件扩展名,并且此扩展名在列表中,我将为其返回密钥。
例如:
Map<Filetype, List<String>> extensionMapping= new HashMap<>();
extensionMapping.put(Filetype.IMAGE, Arrays.asList("jpg", "jpeg"));
extensionMapping.put(Filetype.WORD, Arrays.asList("doc", "docx"));
extensionMapping.put(Filetype.EXCEL, Arrays.asList("xls", "xlsx", "xlsm"));
extensionMapping.put(Filetype.PPT, Arrays.asList("ppt", "pptx", "pptm"));`
然后我想做这样的事情:
return extensionMapping.get().contains("jpg");
对于字符串“ jpg”,它返回我Filetype.IMAGE
。
我应该使用哪个收藏集?
答案 0 :(得分:2)
我将创建一个反向映射,键为扩展名,值为文件类型:
Map<String, Filetype> byExtension = new HashMap<>();
extensionMapping.forEach((type, extensions) ->
extensions.forEach(ext -> byExtension.put(ext, type)));
现在,对于给定的扩展名,您只需执行以下操作:
FileType result = byExtension.get("jpg"); // FileType.IMAGE
答案 1 :(得分:1)
我的意思是,您现在可以通过具有相同的结构Map<Filetype, List<String>>
来做到这一点。在Map
中,任何值(包含"jpg"
的字符串列表)都将返回Filetype.IMAGE
,否则将返回Filetype.None
extensionMapping.entrySet().stream().filter(entry->entry.getValue().contains("jpg")).map(Map.Entry::getKey)
.findFirst().orElse(Filetype.None);