2014-11-24 26 views
26

Tôi có thể thêm null giá trị vào một ArrayList ngay cả khi nó có thông số loại chung không?Thêm giá trị null vào mảng danh sách

Ví dụ:

ArrayList<Item> itemList = new ArrayList<Item>(); 
itemList.add(null); 

Nếu vậy, sẽ

itemsList.size(); 

trở lại 1 hoặc 0?

Nếu tôi có thể thêm null giá trị vào ArrayList, tôi có thể lặp qua chỉ các chỉ mục chứa các mục như thế này không?

for(Item i : itemList) { 
    //code here 
} 

Hoặc mỗi vòng lặp cũng sẽ lặp qua các giá trị rỗng trong danh sách?

+11

tại sao bạn không viết mã để dùng thử? xem [yêu cầu] để đăng câu hỏi hợp lệ –

+3

Tại sao bạn không chạy nó và xem?, mọi vấn đề sau đó đăng ở đây –

+8

Có, 1, không, có. – khelwood

Trả lời

25

Vâng, bạn luôn có thể sử dụng null thay vì một đối tượng. Chỉ cần cẩn thận vì một số phương pháp có thể gây ra lỗi.

Nó sẽ là 1.

cũng null s sẽ là yếu tố trong trong vòng lặp for, nhưng bạn có thể sử dụng

for(Item i : itemList) { 
     if (i!= null) { 
       //code here 
     } 
} 
20

Bạn có thể thêm null đến ArrayList, và bạn sẽ phải kiểm tra null trong vòng lặp:

for(Item i : itemList) { 
    if (i != null) { 

    } 
} 

itemsList.size(); sẽ lấy null vào tài khoản.

List<Integer> list = new ArrayList<Integer>(); 
list.add(null); 
list.add (5); 
System.out.println (list.size()); 
for (Integer value : list) { 
    if (value == null) 
     System.out.println ("null value"); 
    else 
     System.out.println (value); 
} 

Output:

2 
null value 
5 
+1

Cảm ơn bạn, tôi đoán phương thức .size() cũng tính các giá trị null. –

0

Bạn có thể tạo util lớp:

public final class CollectionHelpers { 
    public static <T> boolean addNullSafe(List<T> list, T element) { 
     if (CollectionUtils.isEmpty(list) || element == null) { 
      return false; 
     } 

     return list.add(element); 
    } 
} 

Và sau đó sử dụng nó:

Element element = getElementFromSomeWhere(someParameter); 
List<Element> arrayList = new ArrayList<>(); 
CollectionHelpers.addNullSafe(list, element); 
Các vấn đề liên quan