2014-08-29 49 views
-1

說我有這兩個數組:Java的一個數組排序應用交換到另一個

int[] foo = new int[] {3, 4, 2, 1, 5}; 

int[] bar = new int[] {1, 2, 3, 4, 5}; 

如果我有點foo,我想申請已應用於它bar相同互換。

所以我會得到這樣的:

int[] new_foo = new int[] {1, 2, 3, 4, 5}; 

int[] new_bar = new int[] {4, 3, 1, 2, 5}; 

我怎麼能輕鬆地實現這一點,還有什麼可重複使用的Java方法,所以我沒有去實現這個我自己?

+0

在請求解決方案之前嘗試一些操作。這是計算器的全部目的;) – Balduz 2014-08-29 12:48:29

+0

從未想過id必須這樣說。這只是一個例子。這不是我真正的問題。我無法手動對500+以上的列表進行排序。我需要能夠記錄交換並將它們應用到另一個數組,並且我問是否有一種簡單的方法可以在java中完成。 – Ogen 2014-08-29 12:54:30

回答

3

如果數字在陣列1和2屬於一起,可以創建與兩個屬於字段的對象。讓我們稱之爲具有「foo」和「bar」屬性的「Pair」。然後,我會創建這些對,並按照他們的foo屬性對它們進行排序,如下所示:

public class SortPairs { 

    static class Pair { 
     final int foo; 
     final int bar; 

     Pair(int foo, int bar) { 
      this.foo = foo; 
      this.bar = bar; 
     } 

     @Override 
     public String toString() { 
      return "Pair{" + "foo=" + foo + ", bar=" + bar + '}'; 
     } 
    } 

    public static void main(String[] args) { 

     List<Pair> pairs = Arrays.asList(
       new Pair(3, 1), 
       new Pair(4, 2), 
       new Pair(2, 3), 
       new Pair(1, 4), 
       new Pair(5, 5)); 

     System.out.println(pairs); 

     Collections.sort(pairs, (pair1, pair2) -> pair1.foo - pair2.foo); 
     System.out.println(pairs); 
    } 
} 
1

如果您瞭解如何對一個數組進行排序,則只需在第一個數組中交換單元格時將「entry swap」應用於第二個數組。

僞代碼(因爲這似乎是一個家庭作業的問題):

sort code 
if (need to swap cells i and j in Foo) { 
    swap foo cell i with cell j 
    swap bar cell i with cell j 
} 
loop end 
相關問題