public(static)swap()方法与冗余(非静态)私有方法

hel*_*hod 0 java algorithm data-structures

我正在重新审视数据结构和算法以刷新我的知识,并且我偶尔会偶然发现这个问题:

通常,几个数据结构确实需要交换底层数组上的一些元素.所以我在ADT1,ADT2中实现swap()方法作为私有非静态方法.好处是,作为一个私有方法,我不需要检查参数,坏事是冗余.但是如果我将swap()方法作为公共静态方法放在辅助类中,我需要每次检查索引的有效性,这使得交换调用在完成许多交换时非常低效.

所以我该怎么做?忽略性能下降,或编写小而冗余的代码?

pol*_*nts 5

更好的设计应始终胜过小的低效率.只有在实际证明是一个问题时才解决性能问题.

此外,你还在做什么样的检查?是不是自然抛出ArrayIndexOutOfBoundsException和/或NullPointerException足够好?


它是值得的,虽然有public static Collections.swap(List<?>,int,int),java.util.Arrays使其重载(为int[], long[], byte[], etc)所有 private static.

我不知道如果乔希布洛赫曾经明确阐述他为什么这样做,但是我们可以猜测它有事情做与他的书第25条有效的Java第二版:不想名单阵列.是的,在使用中会出现"性能下降" List,但它可以忽略不计,而且许多优点都弥补了它.