将对象数组中的元素移动到不同元素前面[Java]

时间:2013-03-29 01:45:39

标签: java arrays object

我正在做作业,我想知道是否有一个易于移动的元素在数组周围。我试图按字母顺序对作者列表进行排序,所以我想将数组[1]与数组[2]进行比较,如果2属于1,我只想把它移到那里。我认为最好的方法是使用两个for循环。这基本上就是我所拥有的。有没有简单的方法在数组中的j前面移动k?

for(int j = 0; i > j; j++) {
            for(int k = 0; k > i; k++) {
                if(array[j].getAuthor.compareTo(array[k]) == -1) {
                    //move k in front of j
                } else {
                                  //do nothing
                }
            }

        }

2 个答案:

答案 0 :(得分:0)

你使用java,所以jdk为你提供了一种方法。

Arrays.sort(array,new Comparator<Object> {
      @Override
      public int compare(final Object pre, final Object next){
        //return 0, 1 ,-1 
}
)

答案 1 :(得分:0)

Java阵列上没有原始的“在前面移动”操作。

您需要做的是重新考虑您的算法,以便它可以使用您可用的基本操作。这些是 * 获取并设置特定偏移量的元素(使用array[i]),并获取数组的长度(使用array.length)。

因此,如果您想将array[i]放在array[j]前面,则需要使用循环向左或向右移动ij之间的所有元素和作业。我会让你去弄清楚细节...'很明显,设置你的家庭作业的人希望你这样做。


* - 实际上,有一些用于批量复制数组元素的库方法;例如System.arraycopy。但是,我建议您使用循环实现它,以便您可以更好地了解所涉及的内容。