Если вы можете терпеть расщепление, вот другой способ:
Первая HashMap с ключом в качестве значения type1 и значением в виде :
списка значений type2, связанных с этим значением типа 1
type1_a => type2_b:type2_c..
type1_b => type2_k:type2_d..
Вторая HashMap с ключом в качестве значения type2 и значением в качестве соответствующего значения type3
type2_a => type3a
type3_b => type3b
for type2_key in firstHashMap.get(type1_key).split(':')
secondHasMap.get(type2_key)
Кроме того, вы можете заглянуть в скрипт Lua, чтобы избежать выполнения вышеперечисленных действий на стороне клиента.