Java中包含null对象和其他对象的Arraylist的大小是多少?
我有一个Java中包含null对象和其他对象的Arraylist的大小是多少?,java,arraylist,Java,Arraylist,我有一个ArrayList,它包含一些对象和一些null元素 //Inside for loop private void addPhone(ArrayList<PhoneBean > phoneBeanList,Member member) { if ("A".equalsIgnoreCase(member.getStatus())) { PhoneBean phoneBean = new PhoneBean (); phoneBean .
ArrayList
,它包含一些对象和一些null
元素
//Inside for loop
private void addPhone(ArrayList<PhoneBean > phoneBeanList,Member member) {
if ("A".equalsIgnoreCase(member.getStatus())) {
PhoneBean phoneBean = new PhoneBean ();
phoneBean .setPhNum("12345");
phoneBeanList.add(phoneBean);
}else {
phoneBeanList.add(null);
}
}
似乎null
没有占用任何空间,返回的数组大小只是对象占用的数组大小,并且没有考虑“null”元素
//Inside for loop
private void addPhone(ArrayList<PhoneBean > phoneBeanList,Member member) {
if ("A".equalsIgnoreCase(member.getStatus())) {
PhoneBean phoneBean = new PhoneBean ();
phoneBean .setPhNum("12345");
phoneBeanList.add(phoneBean);
}else {
phoneBeanList.add(null);
}
}
//内部for循环
私有void addPhone(ArrayList phoneBeanList,成员){
if(“A”.equalsIgnoreCase(member.getStatus())){
PhoneBean=newPhoneBean();
setPhNum(“12345”);
添加(phoneBean);
}否则{
phoneBeanList.add(空);
}
}
当addPhone()
运行两次时,我希望phoneBeanList
大小返回2,而不是1。
这是因为null
不影响ArrayList
大小吗
如果状态不是
A
,知道我需要更改/添加什么吗?您可以将null添加到ArrayList中。为了回答您的问题,一个包含null和另一个对象的列表的大小是2
/* package whatever; */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
List<Object> items = new ArrayList<>();
items.add(null);
items.add("test");
System.out.println("Items size: " + items.size());
// Prints 2
}
}
/*任何包*/
导入java.util.*;
导入java.lang.*;
导入java.io.*;
/*只有当类是公共的时,类的名称才必须是“Main”*/
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
列表项=新建ArrayList();
items.add(空);
项目。添加(“测试”);
System.out.println(“项目大小:+Items.size());
//印刷品2
}
}
试试看
是否因为“null”不影响ArrayList的大小
我会说不。这不是因为您添加了null
根据ArrayList中.add()
方法的实现,没有处理null
对象的显式条件。因此,即使将null
添加到列表中,也应该增加数组大小
事实上,他们唯一要做的就是检查是否需要增加支持您的数组列表的当前数组。之后,您的null
对象将添加到列表中
您可以在ArrayList中查看它们的.add()
实现:
public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true;
}
当addPhone()运行2次时,一次为成员状态“A”,另一次为“D”,我希望phoneBeanList大小返回2,而不是1 从您的方法签名
addPhone()
:
private void addPhone(ArrayList phoneBeanList,成员)
用户将选择要添加的ArrayList实例。I高度怀疑您向另一个ArrayList实例添加了元素,这解释了为什么它将列表大小显示为1
如果不是这样,可能还有其他原因没有显示在代码中
- 打印前是否从列表中删除了任何元素
- 是否有其他方法影响您正在打印的ArrayList
phoneBean
或null,而不是两者都添加。在调用addPhone()之前,您是否正在执行任何其他操作
second time?是否会共享您的部分代码?@rodnuk Yes…实际上,我正在使用api从数据库中获取成员行,它可以包含多个HomePh类型或Workph类型的电话行…因此,对于每种电话类型,都会调用此方法并填充phoneBeanList是的,这是我的想法…但我的手机不会发生这种情况如果条件运行并在下一次填充,则编写一次代码,否则将运行填充null。。当我尝试从循环外部获取size()时,它是1,而不是12@Bidisha看看我的解决方案。谢谢大家。我的API没有得到“A”以外的行。请考虑这个问题解决了。