与ArrayList和列表的区别
嗨在这里,我试图从列表中列出项目,并为每个迭代打印5。 这里在下面的代码是打印相同的项目每次与ArrayList和列表的区别
for(int i=0;i<4;i++)
{
List<Card> l=a.subList(a.size()-5, a.size());
System.out.println(l);
}
但这里是印刷不同的项目,就好像它是从列表中的每个时间
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);
}
之间有什么区别除去5上面两段代码
您应该阅读API for List。
返回的列表由该 列表支持,所以在 非结构性变化返回的列表将反映在此 列表中,并且反之亦然。
因此,在每种情况下,您创建的列表不是原始列表中元素的新副本,而只是原始列表中的一个视图。在第二个示例中,您将在新列表中调用clear,这实际上是清除原始列表中的那些元素,因此您看到的行为。
对于该API文档摘录+1。 – asgs 2011-03-17 10:12:54
似乎对.subList()
结果使用.clear()
删除返回的项目形成的原始列表
我相信这是预期的行为 – 2011-03-17 10:15:12
签出subList的文档。它返回一个由原始列表备份的列表,作为视图很有用。如果修改子列表,它将修改主列表。既然你清除了它的元素,原始列表也会被修改。
List is interface.ArrayList是List接口的实现类。
两者都很奇怪。你想做什么? – 2011-03-17 10:11:38
这是你的'handView.clear();'去除了物品。 – asgs 2011-03-17 10:11:48
第二个是我从教程中看到的...第一个我正在尝试做 – satheesh 2011-03-17 10:16:38