我正在使用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]
像这样的东西
提前致谢。
答案 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' )