将数据重组为嵌套映射 - 覆盖put以避免null?

时间:2016-02-05 17:45:45

标签: java list maps null-check

我需要在YAML中转储一些有点复杂的Java对象的列表。为了获得所需的结构,我首先将它们转换为嵌套列表和映射。它有点像:

- item 1
    name : value
    name : value
        - another list
        ...
- item 2
...

或者在eclipses调试器视图中,[...,...]是一个列表,{name:value,name:value}一个地图,它看起来像[{item1 = {name:value,name:value [ {anotherlist}]} ITEM2 = ...]。 这是一团糟,但它不是那么长,也不难理解,只是单调乏味。

问题是这些块中的一些是可选的,所以我得到一些空列表或空值:

- item 1
    null : null
    name : []
- item 2
and so on

这很麻烦,无法再次阅读。我无法检查其中一个更高级别的列表或地图,因为它们可能包含空列表,空映射或空值。我不想写     if(value!= null&&!value.isEmpty) 一遍又一遍地。在我看来,我有3个选择:

  • 我可以在技术上修改模板,但如果我不必,我也不想搞砸。之后我可以遍历整个构造并取出所有空值和空构造。但是手动编写那些长而嵌套的if(value.isList)和if(value.isMap)的递归并不是很好。
  • 我可以写

    private Map putUnlessNullOrEmpty(Map, Name, Value) 
    private List addUnlessNullOrEmpty(List, Name, Value)
    

方法。这就是我所做的,但它看起来非常不合时宜。

  • 如果我可以将这些方法添加到我的列表和该类中的地图中,那就太棒了。或覆盖/重载put / add方法。我可以编写单独的类(或内部类)来扩展通常的地图和列表,只是另一种方法。但这听起来有点过分。

我不熟悉Java或编程方面的经验。你觉得怎么样?

0 个答案:

没有答案