Вы можете сделать следующее:
(mapA.keys + mapB.keys).associateWith {
setOf(mapA[it], mapB[it]).filterNotNull().joinToString()
}
joinToString()
. Ваш метод кажется очень хорошо. Это быстро, это является атомарным, это использует базовые модули только, и File::Temp является безопасным способом иметь дело с временными файлами.Что еще нужно?
Я сделал бы это тот же способ, которым Вы делаете его. По крайней мере, на Ose типа Unix, файл переименовывает, как, гарантируют, будет атомарным, таким образом, у Вас не будет моментов, где или оригинал или новые файлы не там.
Переименуйте достаточно. Однако:
Подвержен риску Ваш временный файл условий состязания? Имя файла должно быть рандомизировано так, никто не может вызвать проблемы путем вставки их собственного файла. Используйте интерфейс для mkstemp (), если это возможно.