zoukankan      html  css  js  c++  java
  • java日常-List、Map初始值

    对于List、Set和Map的初始值,对于初学者来说容易混淆,所以在进行为空判断的时候会容易出错。为了能更好的使用集合,我总结一下:

    一、List的初始值:

    先初始化一个List,输出它的值:

    List<Map<String,Object>> list = new ArrayList<>();
    System.out.println(list);

    输出结果是:[ ]

    也就是说,初始化的List,输出结果并不是null或者“”,如果用list!=null进行判断的话,即使list里边没有值,但是也一定不是null,所以这种判断是不准确的。在java API文档中,List的判断应该是isEmpty()方法。isEmpty()的解释是:如果列表不包含元素,则返回 true然而在List中,如果判断List里边是否有值,还有size()。size()的解释是:返回列表中的元素数。所以判断list中是否有元素的时候,用list.size()>0即可。

    //判断为空
    if(list.isEmpty()){}
    //判断有无元素
    if(list.size()>0){}
    //判断不为空并且有元素,个人觉得这里只用list.size()>0就可以
    if(!list.isEmpty()&&list.size()>0){}

    二、Set的初始化

    其实Set和List都是继承自Collection,所以Set和List是一样的,我就只贴出Set测试的代码及其输出值:

    Set<String> set = new HashSet<>();
    System.out.println("set=" + set);
    
    // 判断为空
    if (set.isEmpty()) {
        System.out.println(true);
    }
    // 判断有无元素
    if (set.size() > 0) {
         System.out.println(true);
    }
    // 判断不为空并且有元素,个人觉得这里只用list.size()>0就可以
    if (!set.isEmpty() && set.size() > 0) {
          System.out.println(true);
    }

    输出值为:

    set=[]
    true

    三、Map初始值

            //初始化空的map
            Map<String,Object> map = new HashMap<>();
            System.out.println("map="+map);
         System.out.println(map.size());
    if(map.isEmpty()){ System.out.println(true); } if(map.size()>0){ System.out.println(true); }

    输出为:

    map={}
    0
    true

    这是一个空的Map,它的初始化值是:{},它里边有0个键值对;所以如果判断Map的值是否有无键值对的时候应该用isEmpty()或者是size();

    再看一个map里边有键值对的例子,验证下操作:

            //初始化map,并put上值
            Map<String,Object> map1 = new HashMap<>();
            map1.put("name", "zhangsan");
            map1.put("age", "27");
            
            if(!map1.isEmpty()){
                System.out.println("map1="+map1);
            }
            
            if(map1.size()>0){
                System.out.println("map1.size()="+map1.size());
            }

    输出结果为:

    map1={name=zhangsan, age=27}
    map1.size()=2
  • 相关阅读:
    Curso de FP Interpretacion Lenguaje de Signos a distancia.
    T1载波与E1载波
    快速以太网中传输介质100BASETX
    MySQLdb
    NRZ编码、NRZI编码、曼彻斯特编码和差分曼彻斯特编码
    静态VLAN和动态VLAN
    Windows用脚本快速修改IP地址(Netsh)
    some skills in Windows
    shell 条件测试
    [转]不要做浮躁的嵌入式工程师
  • 原文地址:https://www.cnblogs.com/hjwq/p/8662492.html
Copyright © 2011-2022 走看看