2013-04-05 84 views
-2

在Java對象的名單上有這個類:排序根據布爾

public class Turn { 

public boolean turnMoved; 
public int moveSelectionX; 
public int moveSelectionY; 
public int moveTargetX; 
public int moveTargetY; 

public boolean turnFired; 
public int shotSelectionX; 
public int shotSelectionY; 
public int shotTargetX; 
public int shotTargetY; 

//Set this to true when doing a turn if we fired before moving 
//Else if we do move/shot in the wrong order, we might select an empty cell 
boolean firedFirst = false; 
} 

別處在我的計劃,我創建這些對象的列表。一旦列表完成後,我想排序順序列表,讓所有滿足1對象將在列表的前面,等:

  1. turnMoved & & turnFired ==真
  2. turnFired ==真
  3. turnMoved ==真
  4. turnMoved & & turnFired ==假

竟被什麼d最簡單的方法是做什麼?

+1

你有什麼試過? Web上必須有成千上萬個示例,演示如何對Java中的對象列表進行排序。 – 2013-04-05 15:37:43

+0

可能重複的[如何排序集合?](http://stackoverflow.com/questions/2477261/how-to-sort-a-collectiont) – 2013-04-05 15:37:59

+0

你看了一下Comparable接口嗎? http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html – 2013-04-05 15:38:23

回答

3

讓您的課程實施Comparable<Turn>,編寫一個compareTo,以反映您的偏好,並使用Collections.sort對列表進行排序。

+0

我在使用compareTo和布爾值時出現了一些問題。 會是這樣的在第一部分的正確路線?目前我沒有代碼交付,所以無法測試。 public int compareTo(Turn t1){if(this.turnMoved == t1.turnMoved) return 0; else if(this.turnMoved> t1.turnMoved) return 1; else return -1; } – user2249693 2013-04-05 16:07:03

+0

你不能使用'''引用'boolean's,所以不可以,它可能不會是這樣的。 :) – sidoh 2013-04-05 16:25:21

+0

if(this.turnMoved == true && t1.turnMoved == false)return 1,then? – user2249693 2013-04-05 16:27:43