Я предлагаю следующий способ: может быть полезно итерировать UDT для каждого ключа
package com.test;
import java.util.HashMap;
import java.util.Map;
public class MainApp {
private static class UDT {
private String value;
public UDT(String value) {
super();
this.value = value;
}
@Override
public String toString() {
return "UDT [value=" + value + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((value == null) ? 0 : value.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
UDT other = (UDT) obj;
if (value == null) {
if (other.value != null)
return false;
} else if (!value.equals(other.value))
return false;
return true;
}
}
public static void main(String[] args) {
Map<String, Map<String, UDT>> udtHolderMap = new HashMap<>();
Map<String, UDT> udtMap1 = new HashMap<>();
udtMap1.put("1", new UDT("100"));
udtMap1.put("2", new UDT("200"));
Map<String, UDT> udtMap2 = new HashMap<>();
udtMap2.put("3", new UDT("300"));
udtMap2.put("4", new UDT("400"));
udtHolderMap.put("1", udtMap1);
udtHolderMap.put("2", udtMap2);
for (Map.Entry<String, Map<String, UDT>> entry : udtHolderMap.entrySet()) {
String key = entry.getKey();
Map<String, UDT> value = entry.getValue();
System.out.println("\nFor key="+key+" UDTs are below");
for (Map.Entry<String, UDT> udtEntry : value.entrySet()) {
UDT valueFromUdtMap = udtEntry.getValue();
System.out.println(valueFromUdtMap);
}
}
}
}
Вывод будет выглядеть следующим образом:
For key=1 UDTs are below
UDT [value=100]
UDT [value=200]
For key=2 UDTs are below
UDT [value=300]
UDT [value=400]