一点都不难受,这是正常逻辑,如果实在要优化,就要根据实际需求看能不能改进了
你是判断整个paramsMap中是否有null吗?如果是可以遍历这个map,外面设定一个布尔的flag,只要遍历到null就设定flag为false,跳出循环
Map<String,Object> map = new HashMap<>();
map.put("zhangsan","18");
map.put("lisi","17");
map.put("wangwu","16");
map.put("test",null);
boolean flag = true;
for(Map.Entry<String,Object> entry : map.entrySet()){
if(entry.getValue() == null){
flag = false;
break;
}
}
if(flag){
System.out.println("参数不为空");
}else{
System.out.println("有参数为空");
}
如果想要优化的这种重复的判断的话执行效率就会变慢,我想到的做法是你先在公共实体类中或者项目初始化时创建一个static List list = new ArrayList集合,提前将不能为空的那些键的名称存储进来供全局调用。在需要判断map集合对应键的值不能为空时就遍历map集合并把键与list集合中的值做比对,如果一样就判断值是否为空,为空就返回。
lass TestA{
static List<String> list = new ArrayList<String>(){
{
add("a");
add("b");
}
};
public static void main(String[] args){
Map<String,Integer> map = new HashMap<>();
map.put("a",1);
map.put("b",null);
map.put("c",3);
for (String s : map.keySet()){
for(String ss : list){
System.out.println(s+"==="+ss);
if(s.equals(ss)){
if(null == map.get(s)){
System.out.println("为null");
}
}
}
}
}
}
直接上代码吧
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("aaa","123");
map.put("bbb","321");
map.put("ccc","123");
//将需要检空的key写入
String[] arr = {"aaa","bbb"};
if (!test1(map, arr)) {
System.out.println("为空返回错误!");
}
}
private static boolean test1(Map<String,Object> map, String[] strs){
boolean temp = true;
Set<String> set = map.keySet();
List<String> list = Arrays.asList(strs);
for (String key : set) {
if (list.indexOf(key) != -1){
if (map.get(key) == null) temp = false;
}
}
return temp;
}
并没有什么即保证效率又简洁的方法,给你一个可以简化2句的静态方法
/**
* 校验对象是不是null
*/
public static boolean isNull(Object... objs) {
for (Object obj : objs) {
if (obj == null) {
return true;
}
}
return false;
}
问答版主就是牛,从现在起只回论坛,不在踏入问答半步