小编vol*_*ley的帖子

为什么不允许外部接口为HashMap提供hashCode/equals?

随着TreeMap它的琐碎,提供自定义Comparator,从而覆盖所提供的语义Comparable添加到地图中的对象.HashMap然而,不能以这种方式控制; 提供哈希值和相等性检查的函数不能"侧载".

我怀疑设计界面并将其改装成HashMap(或新类)既简单又有用?这样的事情,除了更好的名字:

  interface Hasharator<T> {
    int alternativeHashCode(T t);
    boolean alternativeEquals(T t1, T t2);
  }

  class HasharatorMap<K, V> {
    HasharatorMap(Hasharator<? super K> hasharator) { ... }
  }

  class HasharatorSet<T> {
    HasharatorSet(Hasharator<? super T> hasharator) { ... }
  }
Run Code Online (Sandbox Code Playgroud)

不区分大小写Map的问题得到了平凡解:

 new HasharatorMap(String.CASE_INSENSITIVE_EQUALITY);
Run Code Online (Sandbox Code Playgroud)

这是可行的,还是你能看到这种方法的任何根本问题?

该方法是否在任何现有(非JRE)库中使用?(尝试谷歌,没有运气.)

编辑:hazzen提出的很好的解决方法,但我担心这是我试图避免的解决方法......;)

编辑:更改标题不再提及"比较器"; 我怀疑这有点令人困惑.

编辑:与业绩有关的已接受答案; 我会喜欢更具体的答案!

编辑:有一个实现; 看下面接受的答案.

编辑:改写第一句话,以更清楚地表明它是我正在进行的侧面加载(而不是排序;排序不属于HashMap).

java collections hashmap trove4j

14
推荐指数
4
解决办法
2730
查看次数

检测图像中的乐高底板

我想让我的代码在附图中找到方形乐高板的角落.

我还想找到它的尺寸,即两个尺寸中的"blops"数量(附图中为48x48).

我目前正在考虑检测个别"blops",到目前为止的结果非常好:模糊,adaptiveThreshold,findContours和基于区域的选择的组合找到在第二个附加图像中呈现的轮廓(着色是随机的).

我现在正在寻找一种算法来找到这些轮廓(或它们的中点)丢失的"网格",但我缺乏谷歌.有任何想法吗?

(对不同方法的建议也非常受欢迎.)

(示例图像显示了放置在角落的砖块 - 如果有帮助的话,算法可以预期这个.)

(样本图像背景相当狂野.如果可能,我更愿意应对.)

2016年7月8日更新:我正在尝试编写一种算法,查找相邻轮廓的条纹形成线条.算法应该能够找到其中的一些,并从中推断整个板块的形式,即使是透视.将更新,如果它的工作......

2017年12月更新:上述算法有点奏效,虽然有点太不可预测了.此外,我遇到透视问题(添加"厚"乐高砖改变表面)和颜色识别(阴影,相机特性等).这项努力暂时搁置.如果我恢复它,我将尝试使用固定摄像机位置直接在板上方和一致的灯光.

乐高板块

在乐高板图像中找到的轮廓

algorithm opencv

5
推荐指数
1
解决办法
142
查看次数

标签 统计

algorithm ×1

collections ×1

hashmap ×1

java ×1

opencv ×1

trove4j ×1