相关疑难解决方法(0)

Java中C++ Pair <L,R>的等价物是什么?

有没有一个很好的理由为什么Pair<L,R>Java中没有?这个C++构造的等价物是什么?我宁愿避免重新实现自己.

似乎1.6提供类似的东西(AbstractMap.SimpleEntry<K,V>),但这看起来很复杂.

java tuples std-pair

655
推荐指数
17
解决办法
45万
查看次数

guavas Cache(移位)的复合键

我有一个点对象:

  class Point {
    final int x,y;
    ...
  }
Run Code Online (Sandbox Code Playgroud)

因为这些点将在我的代码中的所有位置使用/创建,所以我想开始使用guavas缓存.遗憾的是,CacheLoader只接受一个参数. stackoverflow的另一个问题是使用一个对象来解决类似的问题.但我不喜欢为每个缓存请求创建一个虚拟对象.所以我想出了自己的解决方法:

因为对象是由x和y指定的,所以我认为我可以将两个值合并(移位)为long,这将是我的关键.

void test(int x, int y) {
    Long key = (long) ((long) (x) << Integer.SIZE | y);
    Point point = cache.get(key);
}

CacheLoader<Long, Point> loader = new CacheLoader<Long, Point>() {
    public Point load(Long key) throws Exception {
    final int x,y;
        // shift magic
        x = (int) (key >> Integer.SIZE);
        y = key.intValue();
        return new Point(x, y);
    }
};
Run Code Online (Sandbox Code Playgroud)

我实际上是一个转移菜鸟.这会有用吗?我错过了什么?这比同类"快"吗?那是我的问题!

是的,我测试代码,到目前为止,我可以告诉它.

java caching shift guava

8
推荐指数
1
解决办法
7740
查看次数

标签 统计

java ×2

caching ×1

guava ×1

shift ×1

std-pair ×1

tuples ×1