Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何";面具;Java中for(X:X)循环中显示的某些ArrayList元素_Java_For Loop_Arraylist - Fatal编程技术网

如何";面具;Java中for(X:X)循环中显示的某些ArrayList元素

如何";面具;Java中for(X:X)循环中显示的某些ArrayList元素,java,for-loop,arraylist,Java,For Loop,Arraylist,我试图创建一个Java类,扩展ArrayList,它在创建时基本上用null元素填充列表容量,因此当我向其中添加新元素时,它实际上不会创建它,它只是将已经存在的null设置为所需的值。这是我的构造函数: NullArrayList(int initialCapacity) { super(listSize = initialCapacity); for (int i = 0; i < listSize; i++) super.add(null); } NullArrayL

我试图创建一个Java类,扩展ArrayList,它在创建时基本上用null元素填充列表容量,因此当我向其中添加新元素时,它实际上不会创建它,它只是将已经存在的null设置为所需的值。这是我的构造函数:

NullArrayList(int initialCapacity) {
    super(listSize = initialCapacity);
    for (int i = 0; i < listSize; i++) super.add(null);
}
NullArrayList(int initialCapacity){
超级(列表大小=初始容量);
对于(inti=0;i
问题是,当我将列表放入(X:X)循环中时,它会访问我不关心的所有空元素。当然,我知道我可以插入
if(x!=null)
,但我希望任何人都能够使用我的类,而不必总是在循环中放入if语句(这将是一个主要的设计缺陷)


因此,我想知道是否无论如何,可能使用迭代器(?)来更改for each循环的行为,以便它跳过我希望它跳过的元素。

根据您的要求修改
for
循环行为的唯一方法是重载
迭代器()
方法,并提供跳过空值的
Ì迭代器。但是,如果您这样做,您将破坏
集合
/
列表
接口的契约,并在未来面临巨大问题的风险


因此,处理此问题的真正明智的方法是在
for
循环中添加
if(value!=null)

我认为您正在重新实现控制盘。ArrayList(10)将在列表中创建10个空元素。至于你的答案:是的,你需要实现一个迭代器并将它添加到你的客户列表中。你为什么要创建空的ArrayList?您可以在ArrayList初始化期间提供容量,它将为元素的确切数量保留内存:new ArrayList(5);迭代器在这种情况下也可以正常工作。据我所知,您的类没有提供任何
ArrayList
本身尚未提供的内容。问题是,在数组列表中,我们无法(据我所知)控制空元素的位置。我正试图用这个控件来测试排序和放置算法