假设如果此列表的大小小于1且最后一个元素为null
,我的方法将失败?
我想使用以下类型的方法。
private boolean decreaseArray() {
return false;
}
答案 0 :(得分:0)
由于这听起来像是家庭作业,我只是根据我对你问题的解释给你一些指导方针。
如果你有一个长度为n且大小为m(m 但是,首选使用List接口,如果需要阵列支持的实现,则为ArrayList。 请注意,ArrayList确实可以保留比它包含的exaxt数量更多的内存,但是如果您愿意,可以继承List接口并提供您自己的ArrayList实现,当插入发生时,它会增加1,或者在移除时缩小一个。但是,这种实现方式非常糟糕,因为您必须在任何编辑操作之前和之后复制整个列表,这会在O(n)时间复杂度下放置一个简单的添加和删除方法,这很糟糕。 另一个替代方案是使用linkef列表,因为使用包含实际元素的非原始结构以及对相邻节点的引用,它们本身会带来额外的空间开销。
答案 1 :(得分:0)
我不确定你在问什么,但听起来有点像你在描述Arrays.copyOf
或Arrays.copyOfRange
。
import java.util.Arrays;
public class Foo {
static <A> A[] decreaseArray(A[] as) {
return Arrays.copyOf(as, as.length - 1);
}
public static void main(String[] args) {
System.out.println(Arrays.asList(
decreaseArray(new String[] {"a", "b", "c"})));
// [a, b]
System.out.println(Arrays.asList(
decreaseArray(new String[] {})));
// java.lang.NegativeArraySizeException
}
}