集合存null测试

问题

1.List、LinkedList、Vector可以存null吗?
2.HashSet、TreeSet可以存null吗?
3.HashMap、TreeMap、Hashtable可以存null吗?

测试代码

public class TestNull {
    public static void main(String[] args) {

        //List可以存null吗?
        List list = new ArrayList();
        //List list = new LinkedList();
        //List list = new Vector();
        list.add(null);
        list.add(null);  // 有序可重复
        System.out.println("list长度:" + list.size());  // 2
        System.out.println("list内容:" + list.toString());
        System.out.println("====================================");


        // Set可以存null吗? HashSet可以存null  TreeSet存null会报异常NullPointerException
        Set set = new HashSet();
        //Set set = new TreeSet();
        set.add(null);
        set.add(null);  // 无序不可重复
        System.out.println("set长度:" + set.size());  // 1
        System.out.println("set内容:" + set.toString());
        System.out.println("====================================");


        // 测试HashMap中允许键值对为<null, null>
        Map map = new HashMap();
        map.put(null, null);
        System.out.println("HashMap长度:" + map.size());  // 1
        System.out.println("HashMap内容:" + map.toString());
        map.put(null, 100);  // key相同时,会覆盖原来的value值
        System.out.println("HashMap长度:" + map.size());  // 1   说明key为null只能有一个
        System.out.println("HashMap内容:" + map.toString());
        System.out.println("====================================");


        // 测试一下Hashtable能不能存null
        Map hashtable = new Hashtable();
        //hashtable.put(null, null);  // 异常:NullPointerException
        //hashtable.put(null, 100);  // 异常:NullPointerException
        //hashtable.put(100, null);  // 异常:NullPointerException
        // 总结:Hashtable不能存<null, null>, key和value都不能为null


        // Hashtable的子类Properties
        Map properties = new Properties();
        //properties.put(null, null);  // 异常:NullPointerException


        // TreeMap能不能存<null, null>
        Map treeMap = new TreeMap();
        //treeMap.put(null, null);  // 异常:NullPointerException
        //treeMap.put(null, 100);  // 异常:NullPointerException
        treeMap.put(100, null);  // 发现value可以存null
        System.out.println("treeMap内容:" + treeMap.toString());
        // TreeMap的value可以为空,即<Object, null>可以存
    }
}

总结

综上,常用集合中只有TreeSet不能存null,TreeMap可以存<Object, null>,Hashtable及其子类Properties不能存null,key和value都不能为null

posted @ 2020-12-25 17:55  狂奔的蜗牛君  阅读(86)  评论(0)    收藏  举报