9
如何传达插入顺序在地图中的重要性?
我正在从数据库中获取一组元组,并将其放入地图中。数据库查询成本很高。 映射中的元素没有明显的自然顺序,但是插入顺序仍然很重要。对地图进行排序将是一项繁重的操作,因此鉴于查询结果已经按照我想要的方式进行了排序,因此我想避免这样做。因此,我只是将查询结果存储到中LinkedHashMap,然后从DAO方法返回地图: public LinkedHashMap<Key, Value> fetchData() 我有一种方法processData应该在地图上进行一些处理-修改一些值,添加一些新的键/值。定义为 public void processData(LinkedHashMap<Key, Value> data) {...} 但是,一些短毛猫(Sonar等)抱怨说,“数据”的类型应该是诸如“地图”之类的接口,而不是实现“ LinkedHashMap”(squid S1319)。 所以基本上说我应该有 public void processData(Map<Key, Value> data) {...} 但是我希望方法签名说映射顺序很重要 -这对算法很重要processData-这样我的方法就不会仅传递任何随机映射。 我不想使用SortedMap,因为它(来自的javadocjava.util.SortedMap)“是根据其键的自然顺序来排序的,或者是由通常在排序的地图创建时提供的Comparator来排序的。” 我的键没有自然的顺序,创建比较器不执行任何操作似乎很冗长。 而且我仍然希望它是一个地图,以利用它put来避免重复的键等。如果没有,则data可能是一个List<Map.Entry<Key, Value>>。 那么我怎么说我的方法想要一个已经排序的地图?可悲的是,没有java.util.LinkedMap接口,否则我会使用它。
24
java
code-quality
map