Questions tagged «map»

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 

6
功能图与switch语句
我正在处理一个处理请求的项目,该请求有两个组件:命令和参数。每个命令的处理程序非常简单(<10行,经常<5)。至少有20条命令,可能会超过50条。 我提出了一些解决方案: 一个大的开关/ if-else命令 命令到功能的映射 命令到静态类/单的映射 每个命令都进行一点错误检查,唯一可以抽象的位是检查为每个命令定义的参数数量。 什么是解决此问题的最佳解决方案,为什么?我也愿意接受我可能错过的任何设计模式。 我为每个提出了以下优点/缺点列表: 开关 优点 将所有命令保持在一个功能中;由于它们很简单,因此使其成为可视化查找表 不需要使用大量只会在一个地方使用的小功能/类来弄乱源代码 缺点 很长 难以以编程方式添加命令(需要使用默认大小写进行链接) 映射命令->功能 优点 一口大小的小块 可以以编程方式添加/删除命令 缺点 如果在线完成,则外观与开关相同 如果没有在线完成,很多功能只能在一个地方使用 映射命令->静态类/单例 优点 可以使用多态来处理简单的错误检查(仅3行,但仍然) 与map类似的好处->功能解决方案 缺点 很多非常小的班级将使项目混乱 实施并非都在同一个地方,因此扫描实施并非易事 额外说明: 我正在用Go编写此代码,但是我认为解决方案不是特定于语言的。我正在寻找一个更通用的解决方案,因为我可能需要用其他语言做一些非常相似的事情。 命令是字符串,但是如果方便的话,我可以轻松地将其映射为数字。函数签名类似于: Reply Command(List<String> params) Go具有顶级功能,而我正在考虑的其他平台也具有顶级功能,因此第二个和第三个选项之间的区别。

4
“使用地图代替类来表示数据” -Rich Hickey
在Clojure创作者Rich Hickey的这段视频中,他建议使用map来表示数据,而不是像Java那样使用类来表示数据。我不明白该怎么做,因为如果API用户将其简单地表示为地图,他们怎么会知道输入键是什么。 范例: PersonAPI { Person addPerson(Person obj); Map<String, Object> addPerson(Map<String, Object> personMap); } 在第二个函数中,API用户如何知道创建人的输入是什么?
19 java  design  class  clojure  map 

1
DTO代替实体有什么用?
我正在研究RCP应用程序,我是这个应用程序的新手。 Spring bean用于编写业务逻辑来保存/获取实体。 但是,我们不是将实体直接发送给客户端,而是转换为DTO并填充客户端。保存时,我们再次将DTO转换为实体并保存。 这些转换有什么好处?有人可以解释吗?
18 java  spring  entity  map  dto 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.