由于以下代码行,我被Sonar拉了起来:
public void setFileNames(LinkedHashSet<String> fileNames) {
Run Code Online (Sandbox Code Playgroud)
带有错误消息:
避免使用像'LinkedHashSet'这样的实现类型; 改为使用界面
当我想表示一个Set保持其插入顺序的非排序时,有什么方法呢?我只是使用a Set并明确表示将保留迭代顺序吗?
存储的数据将使用JaxB序列化,反序列化后迭代顺序必不可少.
(我知道并完全理解这一点)
不存在这样的情况interface,因为对于输入要求这种行为是没有意义的。创建 的代码可能Set有关于顺序的意图,并在创建 时选择适当的实现Set。
Set但是,a 是否具有插入顺序、字母顺序或任意顺序(例如基于散列的顺序)的问题对于像这样的方法有何影响?setFileNames(Set<String>\xc2\xa0fileNames)影响?
将参数类型Set声明为 可以保证不会有\xe2\x80\x99 重复,这会对行为产生影响,但插入顺序是关于Set.
如果你坚持有一个方法签名setFileNames(LinkedHashSet<String> fileNames),我仍然可以传递一个Set无意义的顺序,例如调用
\nsetFileNames(new LinkedHashSet<String>(hashSet))或一组具有字典顺序的集合,例如setFileNames(new LinkedHashSet<String>(treeSet))。你的签名只会让事情变得更加复杂。
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |