行业知识
Map中的computeIfAbsent()和computeIfPresent()---java 8新特性
/**
-
给表中添加数据
-
@param object 数据
*/
protected void fillData(String type,Object object){
JSONArray jsonArr = changeObjetToJsonArray(object);
if(jsonArr==null || jsonArr.isEmpty()){
return;
}
//遍历jsonarray
GetDateByTableName getDateByTableName=new GetDateByTableName(testNumber,imsi);
for(int i=0;i
pString typeName=BaseDataPreHandle.typeNamePreHandle(type, jsonItem);/p pTypeForTableName typeForTableName=Enum.valueOf(TypeForTableName.class,typeName.toUpperCase());/p pString tableName=typeForTableName.getTableName();/p p/**mapTableColumns.computeIfAbsent(tableName,k -> getFieldByTableName(tableName));*/if(mapTableColumns.get(tableName)==null){
mapTableColumns.put(tableName,getFieldByTableName(tableName));
}
String[] row= getDateByTableName.getDatasbyName(tableName,jsonItem,mapTableColumns.get(tableName));
if(mapTableValues.get(tableName)!=null){
rowList=mapTableValues.get(tableName);
}
rowList.add(row);
mapTableValues.put(tableName,rowList);
}
}
}
然后我写完用sonarLint 检测发现两个异味,竟然提示我不要这么写,而是提示使用Map.computeIfAbsent()方法,当时很纳闷
使用了lambda表达式,然后我就看了一下computeIfAbsent()源码,如下
default V computeIfAbsent(K key,
Function