首先介绍下GOOGLE的HashBasedTable类库
在Java里面map只能有一个key,导致部分场景下没有那么灵活,例如获取坐标场景,就需要使用两个key来获取坐标的信息,Java自身的map满足不了,那么使用GOOGLE的HashBasedTable类库很好的解决了这个问题。
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
// 创建
Table <Long , Long, Point> plane = HashBasedTable.create();
// 新增
plane.put (1L, 2L, pointA);
plane.put (1L, 3L, pointB);
plane.put (1L, 4L, pointC);
// 获取
Point pointA = plane.get(1L, 2L);
Point pointB = plane.get(1L, 2L);
在实际的场景中,使用最多的是将list转化成HashBasedTable
Table<Long, Long, Point> table = Optional.ofNullable(list).orElseGet(Collections::emptyList).stream().map(item -> ImmutableTable.of(item.getX(), item.getY(), item)).collect(HashBasedTable::create, HashBasedTable::putAll, HashBasedTable::putAll);