如何有条件地设置hashmap键:值对中的值?

时间:2017-06-07 10:31:19

标签: grails hashmap

我正在使用grails。 我想有条件地在地图中设置值。 对于Eg:

3978

所以,我想要实现的是,我想将我的标题的值设置为" book.title"如果特定值不为null,否则它应该是普通字符串" NA"。

输出我正在

HashMap<String, String> mymap= new HashMap<String, String>();
    if (author != null){
        mymap['TITLE'] = book.title
    }else{
        mymap['TITLE'] = 'NA'
    }

我想要的输出

mymap:[TITLE: NA]

像这样的东西

提前致谢。

3 个答案:

答案 0 :(得分:1)

你正在使用groovy所有这一切都可以更优雅地完成:

你必须从某个地方获得书籍的迭代吗?

从以下位置更改:

HashMap<String, String> mymap= new HashMap<String, String>();
    if (author != null){
        mymap['TITLE'] = book.title
    }else{
        mymap['TITLE'] = 'NA'
    }

为:

List titles=[]
books?.title?.each { title->
    titles<< (title?:'NA')
}
def mymap=['TITLE':titles]

答案 1 :(得分:0)

请改用:

HashMap<String, List<String>> map = new HashMap<String, List<String>>();
List<String> myList = new ArrayList<String>();
 if (author != null){
    myList.add(book.title)
}else{
    myList.add('NA')    
}
map.put("TITLE",myList) ;

答案 2 :(得分:0)

更短的变体:

HashMap<String, List<String>> map = [:].withDefault{ [] }
map[ 'TITLE' ] << ( author ? book.title : 'NA' )