What is difference between null and empty list?

后端 未结 4 1978
别跟我提以往
别跟我提以往 2021-01-19 01:14
List> pcList = null;
Map pcMap = new HashMap();
ComputerConfigurations tempPC = null;

if         


        
相关标签:
4条回答
  • 2021-01-19 01:56
        List<Map<String, Object>> pcList = new ArrayList<Map<String, Object>>();
        Map<String, Object> pcMap = new HashMap<String, Object>();
        ComputerConfigurations tempPC = null;
    
        if (historyList != null) {
            Iterator<ComputerConfigurations> iterator = historyList.iterator();
            while (iterator.hasNext()) {
                tempPC = (ComputerConfigurations) iterator.next();
                pcMap.put(tempPC.getEnvironment(), tempPC);
                pcList.add((Map<String, Object>) pcMap);
            }
        }
    
    0 讨论(0)
  • 2021-01-19 01:59

    In Java, collections won't magically spring into existence just by adding something to them. You have to initialize pcList by creating an empty collection first:

    List<Map<String, Object>> pcList = new ArrayList<>();
    

    An empty collection isn't the same as null. An empty collection is actually a collection, but there aren't any elements in it yet. null means no collection exists at all.

    Note that an object can't be of type List, because that's an interface; therefore, you have to tell Java what kind of List you really want (such as an ArrayList, as I've shown above, or a LinkedList, or some other class that implements List).

    0 讨论(0)
  • 2021-01-19 02:02

    You're not initialising pcList at any point. Try this:

        final List<Map<String, Object>> pcList = new LinkedList<>();
        Map<String, Object> pcMap = new HashMap<String, Object>();
        ComputerConfigurations tempPC = null;
    
        if (historyList != null) {
            Iterator<ComputerConfigurations> iterator = historyList.iterator();
            while (iterator.hasNext()) {
                tempPC = (ComputerConfigurations) iterator.next();
                pcMap.put(tempPC.getEnvironment(), tempPC);
                pcList.add((Map<String, Object>) pcMap);
            }
        }
    
    0 讨论(0)
  • 2021-01-19 02:05

    Here is an example based answer. In this example below pcList is just initialized and is pointed to null(java do this for you, if it's a static or class member) since there are no empty list or values assigned to it.

    List<Map<String, Object>> pcList;
    

    Right now, pcList is assigned a new empty ArrayList. It does not have any values yet, but all positions in the list are empty and this pcList with the datatype ArrayList is pointed towards this new empty ArrayList.

    List<Map<String, Object>> pcList = new ArrayList<>();
    

    If an Object reference has been declared but not instantiated, its value is null.

    0 讨论(0)
提交回复
热议问题