嗨我在这里尝试从列表中对项目进行子列表,并为每次迭代打印5个项目.在下面的代码中,它每次都打印相同的项目
for(int i=0;i<4;i++)
{
List<Card> l=a.subList(a.size()-5, a.size());
System.out.println(l);
}
Run Code Online (Sandbox Code Playgroud)
但是在这里它打印不同的项目,就像每次从列表中删除5一样
for(int i=0;i<4;i++){
int deckSize = a.size();
List<Card> handView = a.subList(deckSize-5, deckSize);
ArrayList<Card> hand = new ArrayList<Card>(handView);
handView.clear();
System.out.println(hand);
}
Run Code Online (Sandbox Code Playgroud)
上面两个代码片段之间有什么区别
您应该阅读API for List.
返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然.
因此,在每种情况下,您创建的列表不是原始列表中元素的新副本,而只是原始列表的视图.在第二个示例中,您在新列表上调用clear,这实际上是清除原始列表中的元素,因此您看到的行为.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |