2013-03-29 34 views
0

我正在做一个任务,我想知道是否有一个易于移动数组中的元素。我试图按字母顺序排列作者列表,所以我想比较array [1]和array [2],如果2属于1,我只想将它移动到那里。我想通过使用两个for循环最好的方法来做到这一点。这基本上是我拥有的。有没有简单的方法可以在数组j前面移动k?将元素移动到不同元素前面的对象数组中[Java]

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 
       } 
      } 

     } 

回答

0

你使用Java,所以JDK提供了一种方法适合你。

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

在Java数组上没有原始的“移动”操作。

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

所以,如果你想要把array[i]array[j]前,你需要所有ij之间的所有元素移动到左侧或右侧使用循环和任务。我会留给你解决细节问题......'因为很明显,设定作业的人希望你做什么。


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

+0

我将无法创建相同类型的临时对象。将j的所有值分配给临时对象。将k的所有值分配给j。然后将所有临时对象值分配给k? –