Java 与ArrayList和List的区别
您好,这里我试图从列表中列出项目,并为每个迭代打印5个项目。 在下面的代码中,它每次都打印相同的项目Java 与ArrayList和List的区别,java,Java,您好,这里我试图从列表中列出项目,并为每个迭代打印5个项目。 在下面的代码中,它每次都打印相同的项目 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似乎对的结果使用.clear()。子列表()从原始列表中删除返回的项目似乎对的结果使用.clear()。子列表()从原始列表中删除返回的
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似乎对的结果使用.clear()
。子列表()
从原始列表中删除返回的项目似乎对的结果使用.clear()
。子列表()
从原始列表中删除返回的项目
返回的列表由以下内容支持
列表中的非结构性更改
返回的列表将反映在该列表中
列表,反之亦然
因此,在每种情况下,您创建的列表都不是原始列表中元素的新副本,而只是原始列表的一个视图。在第二个示例中,您在新列表上调用clear,这实际上是在清除原始列表中的那些元素,因此您看到的行为。您应该在
返回的列表由以下内容支持
列表中的非结构性更改
返回的列表将反映在该列表中
列表,反之亦然
因此,在每种情况下,您创建的列表都不是原始列表中元素的新副本,而只是原始列表的一个视图。在第二个示例中,您在新列表上调用clear,这实际上是在清除原始列表中的元素,因此您看到的行为。这是的设计行为e> 子列表()
。请参阅
甚至有一个例子做了几乎完全相同的事情。(从视图中删除项)这是
子列表()的设计行为。
。请参阅
甚至有一个例子做了几乎完全相同的事情。(从视图中删除项目)签出子列表的文档。它返回一个由原始列表备份的列表,可用作视图。如果修改子列表,它将修改主列表。由于您清除了其中的元素,原始列表也将被修改。签出子列表的文档。它返回一个由原始列表备份的列表,可用作视图。如果修改子列表将修改主列表。由于您清除了其中的元素,原始列表也将被修改。列表是接口。ArrayList是列表接口的实现类。列表是接口。ArrayList是列表接口的实现类。两者都很奇怪。您想做什么?这是您的
哈ndView.clear();
删除项目。第二个是我在教程中看到的…第一个是我想做的,两个都很奇怪。你想做什么?这是你的handView.clear()
删除物品。第二个是我在教程中看到的…第一个我想做的我相信这是预期的行为我相信这是预期的行为
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);
}