关于list添加null的问题

本文通过实验展示了在Java中,ArrayList和LinkedList可以成功添加多个null值,并验证了null被视为对象,增加List的长度。

今天看同事写的代码,突然想到如果一个ArrayList添加多个null值会怎样,然后自己写了段代码测试了一下

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListAddNull {

    public static void main(String[] args) {
        List arrayList = new ArrayList();
        arrayList.add(null);
        arrayList.add(null);
        arrayList.add(null);
        System.out.println(arrayList.size());
        System.out.println(arrayList.isEmpty());

        List linkedList = new LinkedList();
        linkedList.add(null);
        linkedList.add(null);
        linkedList.add(null);
        System.out.println(linkedList.size());
        System.out.println(linkedList.isEmpty());
    }

}

输出结果:

3
false
3
false

结论:List是可以添加一个或多个null的,null将作为一个对象添加到List里,List长度会随之增加

### List存储null的情况 在Java中,List是一个有序的集合接口,常见的实现类有ArrayList、LinkedList等。List允许存储多个null元素,因为List中的元素是有序且可以重复的。 以下是一个ArrayList存储null元素的示例代码: ```java import java.util.ArrayList; import java.util.List; public class ListNullExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add(null); list.add(null); list.add("element"); for (String element : list) { System.out.println(element); } } } ``` 在上述代码中,向ArrayList添加了两个null元素和一个普通元素,并且可以正常遍历输出。 ### Map存储null的情况 Map是用于存储键值对(key - value)形式数据的接口,常见的实现类有HashMap、TreeMap和Hashtable等。不同的Map实现类对null的存储有不同的规则: - **HashMap**:允许键(key)和值(value)都为null,但键只能有一个null,因为键必须是唯一的。示例代码如下: ```java import java.util.HashMap; import java.util.Map; public class HashMapNullExample { public static void main(String[] args) { Map<String, String> hashMap = new HashMap<>(); hashMap.put(null, "value1"); hashMap.put("key", null); for (Map.Entry<String, String> entry : hashMap.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } } } ``` - **TreeMap**:键(key)不允许为null,因为TreeMap会根据键进行排序,null无法进行比较。但值(value)可以为null。示例代码如下: ```java import java.util.TreeMap; import java.util.Map; public class TreeMapNullExample { public static void main(String[] args) { Map<String, String> treeMap = new TreeMap<>(); // 下面这行代码会抛出NullPointerException // treeMap.put(null, "value"); treeMap.put("key", null); for (Map.Entry<String, String> entry : treeMap.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } } } ``` - **Hashtable**:键(key)和值(value)都不允许为null,若尝试存储null,会抛出NullPointerException。示例代码如下: ```java import java.util.Hashtable; import java.util.Map; public class HashtableNullExample { public static void main(String[] args) { Map<String, String> hashtable = new Hashtable<>(); // 下面这行代码会抛出NullPointerException // hashtable.put(null, "value"); // 下面这行代码也会抛出NullPointerException // hashtable.put("key", null); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值