다음과 같이지도 데이터 구조가 있습니다. 이것을 표로 변환하고 싶습니다. Tables.newCustomTable()
메서드를 사용하여이 방법을 시도했지만 오류가 발생했습니다.지도에서 구아바 만들기
Exception in thread "main" java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:111)
at com.google.common.collect.Tables.newCustomTable(Tables.java:299)
코드입니다 :
public class TestClass {
public static void main(String[] args) {
Map<Integer, Map<Integer, String>> data = Maps.newHashMap();
Map<Integer, String> internalMap = Maps.newHashMap();
internalMap.put(1, "A");
internalMap.put(2, "B");
internalMap.put(3, "C");
data.put(1, internalMap);
data.put(2, internalMap);
data.put(3, internalMap);
Table<Integer, Integer, String> table = table(data);
System.out.println(table);
}
public static <R, C, V> Table<R, C, V> table(Map<R, Map<C, V>> toTable) {
return Tables.newCustomTable(toTable, new Supplier<Map<C, V>>() {
@Override
public Map<C, V> get() {
return Maps.newLinkedHashMap();
}
});
}
}
internalMap이 비어 있어야한다는 뜻입니까? – user3222372
필자가 생각하기에, 변수'data'에 의해 참조 된 맵을 (따라서 toTable 매개 변수로 참조하는) _data supplies_ map으로 원했습니다. 즉, 공급자를 다시 작성해야합니다. 반대의 경우도 마찬가지입니다 :'Maps.newLinkedHashMap()'으로 생성 한 빈지도는 첫 번째 인수로 놓아야합니다. – Seelenvirtuose
코드 스 니펫을 도울 수 있습니까? 도움이 될 것입니다. 감사. – user3222372