我正在尝试使用Collections.binarySearch();
我需要根据mId
的{{1}}字段进行比较。
编译错误是:
发现'java.util.comparator'必需'java.util.comparator< ? super java.lang.comparable< ?扩展java.lang.comparable< ? 扩展java.lang.comparable< ? >>>>'
Item
答案 0 :(得分:1)
第二个参数应该是您要查找的Item
,不是其itemId
。 Collections.binarySearch
无法知道如何将int
与Item
相关联。
您可能会发现将items
存储为LinkedHashMap<Integer, Item>
更容易(如果您需要保留插入顺序;如果您不关心订单,则可以使用HashMap
),密钥是itemId
。然后,您只需使用return items.get(itemId)
。
另外两点:
id
)通常是一个坏主意:它使测试(以及其他事情)变得困难。最好将mId
作为构造函数参数注入; mId
最终,以便在构建后无法更改 - 如果您采用上面的Map
建议,这尤其重要,因为您不希望地图键与返回的值不同。