基本的に、ツリーマップはその要素に何らかの順序付けを行う必要があるため、IAddressの順序付け方法を説明する必要があります。
たとえば、IAddressに2つの文字列とint(city、street、number)があるとすると、次のようになります。
// translate an IAddress to a P3 containing the important data
F<IAddress, P3<String, String, Integer>> toP3 = new F<...> () {
P3<String, String, Integer> f(IAddress addr) {
return P.p(addr.getCity(), addr.getStreet(), addr.getNumber());
}
main () {
// first map IAddress to a P3 using the function above, then simply order it by its fields
Ord<IAddress> addrOrd = Ord.P3Ord(Ord.StringOrd, Ord.StringOrd, Ord.IntOrd).comap(toP3);
fj.data.TreeMap<IAddress, Optional<ScanNode>> nodes = TreeMap.empty(addrOrd);
}
同時マッピングとは、最初にIAddressのP3に関数を適用し、P3を取得してから、指定されたP3の順序で並べ替えることを意味します。