如何ArrayList
在Java中获取一个数组切片?具体来说,我想做这样的事情:
ArrayList<Integer> inputA = input.subList(0, input.size()/2);
// where 'input' is a prepouplated ArrayList<Integer>
因此,我希望这可以正常工作,但是Java返回List
-,因此不兼容。而且当我尝试投射它时,Java不会让我这么做。我需要ArrayList
-该怎么办?
在Java中,优良作法是在API中使用接口类型而不是具体的类。
您的问题是您正在使用ArrayList
(可能在很多地方)应该使用的地方List
。结果,您为自己创建了问题,并不必要地限制了列表为ArrayList
。
这是您的代码应如下所示:
List input = new ArrayList(...);
public void doSomething(List input) {
List inputA = input.subList(0, input.size()/2);
...
}
this.doSomething(input);
您为问题建议的“解决方案”是/是:
new ArrayList(input.subList(0, input.size()/2))
可以通过复制子列表来实现。这不是正常意义上的切面。此外,如果子列表很大,那么制作副本将很昂贵。
如果您受到 无法更改 的API的约束,因此 必须将其 声明inputA
为an
ArrayList
,则可以实现的自定义子类,ArrayList
其中该subList
方法将返回的子类ArrayList
。然而:
ArrayList
。ArrayList
实例的地方更改相关位置,以创建子类的实例。“复制数组”解决方案更加实用……请记住,这些不是真实的切片。
但是我们不能在集合中存储HashMap。我想要HashMap与键,值对作为返回值,这将被添加到列表中。也就是说,最终的值应该采用ArrayList>格式。 你能在这方面帮助我吗?谢了。
这段代码运行良好,但我想知道它的性能,我指的是它的总体时间复杂度?
问题内容: 我有一些数据存储为。当我要备份此数据时,java会永远绑定两个对象。这意味着当我更改数据值时,此更改将备份。我试图将数据中的值分别复制到循环中的备份中,试图使用方法-没有任何帮助。 问题答案: 我认为您需要针对单个对象。克隆不是“深入”;它只会克隆对对象的引用。
我想要一个数组列表,并限制元素删除。我该怎么做?
问题内容: 我看到了一个问题:从数组创建ArrayList 但是,当我使用以下代码尝试该解决方案时,它并不能在所有情况下都有效: 我在这里做错了什么?代码不应该编译就好吗? 问题答案: 问题在 是,被认为是一个单一的,因为基本数组从延伸实例。如果你有这样的工作,而不是因为现在你要发送的数组。 根据您的评论:如果您仍然想使用一个(或另一个原始类型的数组)作为主要数据,那么您需要使用wrapper类创
问题内容: 我有一个包含一些对象的对象,例如,每个对象都有一个and 属性。如何从其中仅删除具有特定“名称” 的对象? 问题答案: 您可以使用如下形式: