2013-04-05 5 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 == ложный

Что woul d самый простой способ сделать это?

+1

Что вы пробовали? В Интернете должно быть тысячи примеров, показывающих, как сортировать список объектов в Java. –

+0

Возможный дубликат [как отсортировать коллекцию ?] (Http://stackoverflow.com/questions/2477261/how-to-sort-a-collectiont) –

+0

Вы просмотрели интерфейс Comparable? http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html –

ответ

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; прочее return -1; } – user2249693

+0

Вы не можете использовать '>' в ссылке на 'boolean', поэтому нет, вероятно, это не так. :) – sidoh

+0

if (this.turnMoved == true && t1.turnMoved = false) return 1, then? – user2249693

Смежные вопросы